Drupalは開発が高速ですが、パフォーマンスは非常に低いです。 1秒あたり50リクエストに到達するのは困難です。
そして、単純なWebページには非常に多くのSQLクエリがあります。 Drupal.orgでフォーム送信のリクエスト時間をテストすると、完了するまでに常に数秒かかります。
Webサイトの速度をどのように改善しますか?
キャッシング、キャッシング、キャッシング。
以前にd.oで同様の質問に対して行ったいくつかの提案。
これらは私の経験からのメモであり、他の経験とは異なる場合があります。私は主にLAMPスタックを使用しており、私の提案では同じと考えています。
私が一般的に従うキャッシュの経験則
a Drupalサイトのパフォーマンスの向上(複雑さの昇順)
コアを更新し、contribモジュールとテーマを更新してください。はい、それは重要です。
サーバーにAPCをインストールします。 (レサリオンからの提案に基づいてトップに移動しました)
ページキャッシング:admin/config/development/performance 最小キャッシュライフタイムとキャッシュページの有効期限の違い
スプライトシートを使用- https://www.drupal.org/project/spritesheets
最小キャッシュライフタイム値をより高い値に設定し、キャッシュクリアモジュールを使用して特定のページのキャッシュをクリアします- ノードを編集/更新すると、匿名ユーザーのすべてのページキャッシュが失われます
Boost モジュールも非常に便利で、Webページから静的ファイルキャッシュを作成します。これは主に、匿名ユーザーのトラフィックが多いWebサイト用です。
Boostは、Drupalの静的ページキャッシュを提供し、ほとんどが匿名のトラフィックを受信するサイトのパフォーマンスとスケーラビリティを大幅に向上させます。共有ホスティングの場合、これはパフォーマンスの向上という点で最良のオプションです。専用サーバーでは、代わりにワニスを検討することをお勧めします。
Apacheは完全にサポートされており、Nginx、Lighttpd、IIS 7はセミサポートされています。Boostは、html、xml、ajax、css、およびjavascriptをキャッシュおよびgzip圧縮します。Boostsキャッシュの有効期限ロジックは非常に高度です。組み込みのクローラーにより、ページの読み込みを高速化するために、期限切れのコンテンツを迅速に再生成できます。
言及する価値があります。SQLIteデータベースドライバーを使用している場合は、ディスク同期を無効にする必要がある場合があります。
/**
* Implements hook_init().
*/
function HOOK_init() {
db_query('PRAGMA synchronous = OFF');
}
一部のサーバー構成では、パフォーマンスが劇的に向上します。
Drupalパフォーマンスの秘密はcachingにあり、優れたプラクティスに従っています。推奨事項:
defer
またはasync
属性を使用します。Webサイトの高負荷が予想される場合は、Varnishを使用してください。 CDNの使用も検討してください。
続きを読む: スケーリングとチューニングのパフォーマンスにおける実際の経験
その他のリソース:
いくつかのパフォーマンスとスケーラビリティの問題を解決するためのベストプラクティス、例、および詳細な説明を提供する High Performance Drupal という名前の本があります。 Drupal内部、アプリケーションのパフォーマンス、データベース、Webサーバー、およびパフォーマンス分析にコーディングおよびインフラストラクチャテクニックを適用する方法を学びます。
Drupal 7 のパフォーマンスとスケーラビリティ)の記事には、Drupal 6およびDrupal 7および次のリスト:
注目すべきDrupal 7のパフォーマンスおよびスケーラビリティプロジェクト:
- https://www.drupal.org/project/agrcache
- https://www.drupal.org/project/apc
- https://www.drupal.org/project/beanstalkd
- https://www.drupal.org/project/boost
- https://www.drupal.org/project/cdn
- https://www.drupal.org/project/core_library
- https://www.drupal.org/project/entitycache
- https://www.drupal.org/project/efq_views
- https://www.drupal.org/project/hash_wrapper
- https://www.drupal.org/project/labjs
- https://www.drupal.org/project/headjs
- https://www.drupal.org/project/media_Amazon
- https://www.drupal.org/project/memcache
- https://www.drupal.org/project/mongodb
- https://www.drupal.org/project/performance_hacks
バックエンド開発者として、コードを改善してWebサイトのパフォーマンスを向上させる余地は常にあります。バックエンド開発者向けのガイドラインは次のとおりです。
1)ウォッチドッグテーブルをクリーンアップする
2)変数APIを乱用しないでください
3)HTTPリクエストの数を減らすまたは改善する
4)「ドットモジュール」を短くする
フォントエンドとサイトビルダーについては、さらに多くのことを達成できますが、あらゆる観点からパフォーマンスを考慮することが重要です。
ソース: 実稼働前に最適化
新しいモジュールをインストールせずに、Drupal速度を妥当なレベルで向上させるためのいくつかの可能性があります。はい、Drupalにはパフォーマンス構成があります。
「集約JavaScriptファイル」を有効にする
この構成を設定したら、次の場所に移動します:YourSiteDomain/admin/reports/status
これで、drupal 7サイトの速度最適化が完了しました。
速度をチェックするオンライン速度テストツールはほとんどありません。上記の設定を更新する前に、必ず速度チェックツールの1つを使用してテストを実行してください。パフォーマンス設定を更新したら、速度テストを再度実行します。間違いなく改善が見られます。
PingdomとHTTP Fox(FireFoxプラグイン)は、サイトの速度をチェックするのに最適なツールです。
上記の設定は、匿名ユーザーのページをキャッシュするだけでなく、CSSおよびJSファイルも圧縮します。サイトが80個のファイルを読み込んでいる場合の例として、これらの設定をポストすると、リクエストの数が少なくとも50%削減されるため、Drupalサイトでは速度が2倍向上します。
Drupalサイトのパフォーマンスを最適化するために多くの微調整が行われましたが、すべてが必須というわけではありません。 Drupal。キャッシュ、はい、これはさまざまな方法でWebサイトを最適化する方法ですが、アドオンやヒントを増やすと、面倒なプロセスなしでWebサイトを調整できます。
最近、私たちのWebサイトに同様の記事を公開しました。これは、Tweakの作業を行う際に役立つと思います。
ソース: http://www.cloudreviews.com/blog/drupal-performance-optimization-tips
最適化されていないDrupal 7 GBの2 GBのRAMは、1秒あたり約20-25のリクエストを十分に処理できます。それを超える場合、サイトは調整が必要です。調整する内容は、サイトのほとんどのユーザーが匿名であるか認証されているかによって異なります。パフォーマンス向上のためにできることは次のとおりです。
サイトは主に匿名ユーザーにサービスを提供しています:
1)APC、memcache、およびentitycacheを確実にインストールして構成します。
2)Webサーバーの前にVarnishプロキシを配置します。インストールと設定には約30分かかりますが、ページの読み込み時間が大幅に短縮されます。実際、すべてのページがキャッシュされている場合、2 GBのマシンでVarnishは1秒あたり約300のリクエストを処理できます。 Expireモジュールを使用して、コンテンツの更新/削除時に選択したページのみを期限切れにします。
3)CSSおよびJSファイルを集約するためにAdvanced CSS/JS Aggregationモジュールを使用します。すべてのJSファイルをページの下部に移動してみてください。ただし、これによりサイトが破損する可能性があるため、十分なテストを行った後、運用環境で実装してください。重要なCSSのインライン化も試してください。私の経験では、ページの読み込み時間が約0.5秒短縮されます。
4)CSS/JS/imagesには、将来の有効期限ヘッダーが含まれるはずです。これにより、ブラウザが同じCSS/JS /画像を何度もリクエストしないようになります。
5)Webサーバーが圧縮ページ/ CSS/JSを提供していることを確認します。
上記の5つのステップを実装すると、2 GBのRAMサーバーは、1秒あたり50のリクエストをかなり簡単に処理できるようになります。
サイトは主に認証されたユーザーにサービスを提供しています:
そのようなサイトの最適化はより複雑です。このようなサイトは、最適化のために2つのサブカテゴリのいずれかに分類されます。
(a)サイト上のほとんどのページは、ユーザー固有の情報を持つ1つまたは2つのブロックを除いて同一です。たとえばDrupal商取引サイト。
(b)ほとんどのページはユーザー向けに完全にカスタマイズされています。たとえばDrupalコモンズサイト。
サイトがカテゴリ(a)に該当する場合は、ほとんどが匿名ユーザーにサービスを提供しているサイトについて説明したテクニックのほとんどを適用します。唯一の違いは、管理者以外のページの場合、VarnishはヘッダーからSESSION Cookieを削除し、キャッシュされたページを提供する必要があることです。 AJAXブロックモジュールは、AJAXを使用してユーザー固有の情報でサーバーブロックを実行します。この方法では、ほとんどのページがVarnishを使用して非常に迅速に提供され、ユーザー固有の情報がAJAXを介して提供されます。
サイトがカテゴリ(b)に該当する場合は、Authcacheモジュールを使用してください。かなりの設定とメンテナンスが必要なため、できるだけ使用しない方がいいと思います。しかし、それは本当にうまくいきます。 Varnishを使用するほど高速ではありませんが、探している1秒あたり50のリクエストを処理できます。
ここで説明した以上のことを検討している場合は、 Drupal Performance Optimization Checklist をご覧ください。開示:それは私が書いたものです。これは、Drupalサイトを高速化するために実行できることの完全なリストを引用しています。