Drupal7サイトのパフォーマンスを向上させるにはどうすればよいですか?[閉まっている]


10

Drupalを初めて使用する人にとっては、Drupalキャッシングで利用できるリソースがたくさんあるようですが、どれを使用すればよいかわかりません。


1
メタについてこれに関する標準的な質問が必要かどうかを議論することはできますが、それでも広すぎると思います。また、パフォーマンスの向上は状況に応じて変化し、孤立したものではありません。
mpdonadio

回答:


26

これらは私の経験からのメモであり、他の経験とは異なる場合があります。私は主にLAMPスタックを使用しており、私の提案では同じと考えています。

私が一般的に従うキャッシュの経験則。

  1. 一度使用して複数回処理する。
  2. 可能な場合は古いデータを使用する
  3. キャッシュを頻繁に消去せず、非常に具体的にしてください。
  4. 可能な場合は、スタックの最下位レベルで変更を行ってください。LAMP-DCCc:Linux、Apache、Mysql、PHP、Drupal Core、Contribおよびカスタムモジュール。

Drupalサイトのパフォーマンスを向上させる(複雑さの順に)

  1. コアを更新し、contribモジュールとテーマを更新してください。はい、それは重要です。

  2. サーバーにAPCをインストールします。(レサリオンからの提案に基づいてトップに移動しました)

  3. ページキャッシング:admin / config / development / performance 最小キャッシュライフタイムとキャッシュページの有効期限の違い

  4. ブロックキャッシュhttps://drupal.org/project/blockcache_alterすべてのブロックのキャッシュオプション。
  5. 集約javascriptおよびcssファイル-フロントエンドの改善 https://www.drupal.org/project/advagg
  6. 不要なモジュールを無効にします。すべてのモジュールは、ページの読み込みに使用できる必要があるコードの量を増やします。また、ルックアップの数も増加します。可能な限り、特定の機能を実行する複数のモジュールの代わりに汎用モジュールを使用します。
  7. ビューのコンテンツのキャッシュ-ビューのコンテンツ対応キャッシュ https://www.drupal.org/project/views_content_cache
  8. DBロギングを無効にする-https://drupal.org/project/syslog_ngを使用
  9. 404エラーを減らす-http ://www.brokenlinkcheck.com/
  10. 高速404応答-https://drupal.org/project/fast_404-サーバーレベルで処理してください。
  11. クライアント側の検証-https ://www.drupal.org/project/clientside_validation
  12. 画像の圧縮-https://www.drupal.org/project/imageapi_optimize
  13. 画像の遅延読み込み-不要な画像を読み込まない -https://www.drupal.org/project/lazyloader
  14. スプライトシートを使用する-https ://www.drupal.org/project/spritesheets

  15. 最小キャッシュライフタイム値をより大きな値に設定し、キャッシュクリアモジュールを使用して特定のページのキャッシュをクリアします- ノードを編集/更新すると、匿名ユーザーのすべてのページキャッシュが失われます

  16. Devel Moduleを使用してクエリを監視します。
  17. ビューのクエリを書き換える/過剰な場合はビューを回避する。
  18. XHProf- https: //www.drupal.org/project/XHProf
  19. FPM、HHVM。
  20. DBプロファイリングおよびチューニング-https ://www.drupal.org/project/dbtuner
  21. Boostを使用し、必要がない場合はDBをブートストラップしないでくださいhttps://drupal.org/project/boost小規模から中規模のほとんどのサイトでは、Boostで十分であり、リバースプロキシなどは必要ない場合があります。
  22. CDNを使用する-https : //www.drupal.org/project/cdn 設定は簡単です。
  23. キャッシュテーブルが巨大な場合はMemcachedを使用してください-memcachedをインストールしてRAMをセットアップできる場合、それは思ったほど複雑ではありません。
  24. Etags-Etagsを適切に構成します。 https://developer.yahoo.com/blogs/ydnfiveblog/high-performance-sites-rule-13-configure-etags-7211.html
  25. リバースプロキシサーバー -ワニス(アセットの場合は少なくとも)を使用します。ほとんどのユーザーが匿名である場合に役立ちます。
  26. 圧縮転送-gzip圧縮を有効にする
  27. キープアライブ-可能な場合は永続的な接続を使用します。
  28. プログレッシブJPEG-
  29. コードのキャッシング-Eatonのブログは素晴らしいです。 http://www.lullabot.com/blog/article/beginners-guide-caching-data-drupal-7
  30. キャッシュウォーミングの実装-https://www.drupal.org/project/cache_warmer- エンドユーザーがアクセスする前にページをキャッシュウォームします。
  31. マスタースレーブDB設定-https ://www.drupal.org/project/autoslaveを使用すると、簡単に設定できます。
  32. データベースクラスター-https ://stackoverflow.com/questions/1163216/database-cluster-and-load-balancing
  33. ロードバランサー-http ://en.wikipedia.org/wiki/Load_balancing_(computing)
  34. ヒューリスティックなキャッシュウォーミングを使用する-https ://www.drupal.org/project/cache_graceful
  35. 認証済みユーザーキャッシュ-https ://www.drupal.org/project/authcache

2
すばらしい答えですが、私にとって非常に際立っているのは、APCが一番上にないということです。APCは簡単に導入でき、欠点はなく、利益は非常に大きくなる可能性があります。一番上に行くべきだと思います。(おそらく、最適化が最終的に統合されたため、PHP 5.5以降では不要であるとのコメント)
Letharion

1
キャッシングの最も簡単な利点についても触れているでしょうか?サイトがほとんど静的なコンテンツを必要とする場合(ページはすべてのユーザーで同じであるため、ログインはありません)、VarnishまたはBoostが最大のメリットを提供します。
ドミニクウッドマン


3

Gokulの答えの伴侶として、Drupalにキャッシュしたいものについて私が考える方法を以下に示します(複雑さで並べられていません)。

キャッシングとは、繰り返されるアクティビティを高速化することです。

Drupal Webサイトに含まれる大きな繰り返しアクションは次のとおりです。

  • ウェブページを呼び出す
  • PHPコードを実行してWebページを作成する
  • PHPがデータベースからアイテムを呼び出す

Webページ全体をキャッシュする

キャッシュの最大の利点は、PHPコードを実行したりデータベースを呼び出したりせずにWebページ全体をキャッシュする方法を見つけることです。

これはVarnishまたはBoostで実行できます。ユーザーがページを呼び出すと、計算を行わずにページのコピーが返されます。

ただし、ページの一部を異なるものにする必要がある場合(つまり、ユーザーがログインし、その名前が上部に表示される場合)は機能しません。

これを機能させるには、Authcacheを調べる必要があります。

PHPキャッシング

APCを使用してPHPをキャッシュできます。バージョン5.5以降を使用している場合は、別のキャッシュが組み込まれています。

これはサーバー側で行われ、PHPコードのチャンクが記憶されることを意味します。DrupalのPHPをキャッシュしていますが、技術的にDrupalと対話していません。

データベースのキャッシュ

データベースから情報を取得するための呼び出しは負荷が高くなります。

最も一般的なデータベースキャッシングメカニズムはmemcacheです。

これにより、データベースオブジェクトがRAMにキャッシュされるため、ハードドライブ上のデータベースオブジェクトを呼び出す代わりに、RAMからデータベースオブジェクトをプルするだけで済みます。


1
Redisは優れたメモリ内キャッシュストアでもあり、少なくとも私の経験ではmemcacheに匹敵します(ただし、me​​mcacheはおそらくクラスタリングで勝っています)
Clive
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.