web-dev-qa-db-ja.com

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

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

10
Gokul N K

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

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

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

a 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を使用しますBootstrap必要ない場合は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
26
Gokul N K

データベース層は重要です。このプレゼンテーションでは、その一部と基本について説明します http://goo.gl/30yi39

5
mikeytown2

Gokulの答えの伴侶として、ここに、Drupalでキャッシュしたいものについて考える方法を示します(複雑さの順序ではありません)。):

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

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

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

ウェブページ全体をキャッシュする

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

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

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

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

PHPキャッシング

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

これはサーバー側で行われ、PHPコードのチャンクが記憶されます。キャッシュしていますPHP for Drupalしかし、技術的にDrupalを操作しているわけではありません。

データベースキャッシュ

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

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

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

3
Dominic Woodman