有効なモジュールを増やすと、サイトの速度が低下しますか?


13

有効なモジュールを増やすと、サイトの速度が低下しますか?
自分のサイトに30個のモジュールをインストールしましたが、遅すぎるのではないかと心配しています。

回答:


11

より多くのファイルをロードして解析するため、有効なモジュールを増やすとDrupalのブートストラップが遅くなります。それとは別に、すべてのモジュールが要求されたページごとにコードを実行するわけではないため、有効なモジュールを増やしてもサイトが遅くなることを自動的に意味するわけではありません。

たとえば、Viewsをインストールし、フロントページビューのみを有効にした場合、要求されたページがノードページである場合、Viewsは実行されません。ただし、Viewsモジュールはを実装しており、ビューをhook_menu_alter()有効にしていない場合でも実行されますが、Viewsモジュールは有効になっています。hook_menu_alter()メニューの再構築時にの実装が呼び出されますが、通常はすべてのページリクエストで実行されるわけではありません。


6
「何もしない」モジュールがたくさんあると、サイトが少し遅くなります。フックシステムの動作方法に関係する必要があります。Drupalは、フックが実行されるたびに、インストールされているすべてのモジュールに対してmodule_hook呼び出しを行います。これらのチェックはすべて合計できます。このサイトでは、module_hookが13,000回呼び出され、168ミリ秒かかりました。少しずつ合計します。
mikeytown2

15

はい。ただし、30は心配する必要はありません。100を超えると問題が発生します;)

バイトコードキャッシュ(APCまたはXCache)をインストールして、多くのファイルを含めることによるスローダウンのほとんどを解消し、未使用のモジュールを定期的に削除します(通常、すべてのプロジェクトは開発中のある時点で未使用になるモジュールを収集します)


Commerce Kickstartは96個のcontribモジュールを使用していることがわかります。
ペレ

XCacheをインストールすると、ページが半分の時間でレンダリングされました。ありがとう。
cherouvim

1

@Bojan Zivanovicと@ki​​amlalunoの両方の応答を補完するために、モジュールの相互作用に注意する必要があります。多くのモジュールがあると、悪いモジュール相互作用(薬物相互作用など)のリスクが高まります。50を超えるモジュールを使用すると危険になるため、同じタスクドメインで複数のモジュールを使用しないことを早期に確認する必要があります。

ブロック、ビュー、パネル、ビューを含むフィールド、ビューを含むブロック、ビューを含むパネルを含むブロックを含むページを構築する例として...アイデアは、通常の脳が理解できるものを取得することです(私の異なるページはどのように構成されますか) 。これは、いくつかの複雑な読み込み動作が非表示およびチェーンになっている場合、パフォーマンスに大きな影響を与える可能性があります。別の例として、コンテンツごとに複数のモジュールから複数のACLルールを追加します。

パフォーマンスに不安がある場合は、常にプロファイルモジュールを使用し、新しいモジュールを追加するたびに違いを追跡してください。SQLが内部にある小さなフックまたはカスタムテンプレートを使用すると、Webサイトの時間を節約できます。


drupalは「正常な脳」のために作られていますか?:)
pico34

1

drupalサイトを高速化できるサイト構築時に留意すべき3つの事項は次のとおりです。

  1. モジュールの数を減らす
  2. mySQLクエリログで遅いクエリを確認し、必要に応じてコードを調整し、インデックスを追加します。
  3. キャッシュ(そして、ほとんどのユーザーが認証されないことを望んでいます)

また、モジュール部分に関しては、処理するのにより大きなRAMが必要なため、明らかにモジュールの数が多いほど速度が遅くなります

それでも30から60のモジュールはあなたのサイトにそれほど影響を与えません。

サイトのロード時間とモジュール数の比率は、100モジュールllのようにサイトを350ミリ秒から650ミリ秒遅らせます。

次のサイトでこれらのポイントを念頭に置いてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.