
みなさんこんにちは! 人気のあるCMS / CMF Drupalのパフォーマンス、つまり7番目のバージョンについてお話しましょう。
経験の浅いユーザーの多くは、Drupalが遅いと非難しています。 同様に、Drupalはすべてのリクエストに対して常に完全にロードされ、すべてのモジュールをロードします。 一般に、彼らはおそらく正しいです、Drupalはそのような問題を抱えていますが、それは解決可能です。
Drupalでは、ノード、ユーザー、または分類用語にかかわらず、訪問者を対象とするほとんどすべてのコンテンツはエンティティです。 それらから始めましょう。
develに含まれているdevel_generateモジュールを使用して1000人のユーザーを生成し、データベースからのロード時間を測定します。

この例は、この操作に30秒かかることを示していますが、実際にはあまり良くありません。 まあ、この場合のためだけに、Drupalはエンティティをキャッシュするための独自のシステムを持っています。 職場で彼女を見てみましょう。

再起動すると、これらのユーザーは2秒でロードされます。Drupalはよくできていますが、より良い場合もあります。
いくつかのモジュール( Entity cacheおよびMemcache )をダウンロードして有効にします。
エンティティキャッシュモジュールを使用すると、キャッシュAPIを使用して標準のDrupalエンティティをキャッシュできます。
Memcacheは、キャッシュケアをMySQLからMemcachedサーバーに転送する機能を提供します。Memcachedサーバーは、RAMにデータを格納するため、より高速に動作します。

そして、すぐに成功すると、最初の打ち上げは30秒ではなくたった2.8秒で完了します。先に進みましょう。

Memcachedサーバーのキャッシュからデータが取得される再起動には、0.4秒かかります。 Drupalのデフォルトのキャッシングと比較してかなり良い。
ただし、Memcachedだけではなく、 Redisでもそのようなことができます。
Memcacheモジュールを無効にして、 Redisモジュールをインストールします。

キャッシュが最初に形成されるため、最初の起動は再び長くなります。 結果は2.2秒ですが、これが最良の結果です。

0.35!
したがって、最初の起動の場合は13倍、キャッシュからデータを取得する場合は5倍のパフォーマンスの向上を達成しました。
残念ながら、ホスティングには常に追加のMemcachedまたはRedisサーバーをインストールする機能があるわけではありません。 この場合、エンティティキャッシュモジュールのみを実行できます。

最初の要求はかなり長く実行されます。 これもキャッシュの生成によるものです。

ただし、後続のすべては1秒未満で完了します。
このことから、エンティティキャッシュモジュールは、Drupalサイトの必須モジュールであると結論付けることができます。 機能に基づいて、Redisで補完できます。