キャッシングへの招待

Ploneのスピードを解決する一つの方法は、キャッシュすることです

CacheFuに同梱されているドキュメント(cachefu/CacheSetup/doc/audience.rest)の超訳です。
Page 2 of 7.

Ploneのようなステキなプログラムはちょっと遅いでしょう。これは別に開発者の過失というわけではなくて、Ploneがページのリクエストを受けるときに、あなたにいろんなことをしてあげている、その機能の副作用なのです。

例えば「newsitems-project-a」というページのリクエストがあった場合を想像してみてください。Ploneがしなければならないことは:

  • そのユーザがログインしているかどうかをチェックし、もしそうであれば、そのログインが正しいかどうかをチェックする
  • オブジェクトデータベースから当該オブジェクトを見つける
  • そのユーザが当該オブジェクトに対する権限を持っているかどうかをチェックする
  • ページテンプレートをスキン化する
  • 要求されたロジックを実行する(例えばカレンダーポートレットはカレンダーに表示するものを探さなくてはならない)
  • そのユーザに関する情報を加える(名前を表示したり、個人設定を適用したり、などなど)
  • 必要なJavaScriptやCSSを決める
  • 動的なナビゲーションツリーなどを生成する
  • どのポートレットを表示するか考えて、それらを表示する
  • もっともっといろいろすることが…

こ れらのいろいろなチェックや動的な生成は、Ploneをリッチで使いやすいものにしてくれるという意味で非常によいことですが、これはPlone の外から見れば、短い時間ではウェブページをあまり表示できないと言う事になります。あまりトラフィックのないサイトでは許容できることかもしれません が、もっとトラフィックの多いサイトではページを行き来するだけで何秒も待たされる事になり、ユーザは「遅いなぁ」と感じることになります。

これを解決する一つの方法は、キャッシュすることです。Zope/Ploneや他のプログラムに、「この部分はいつも生成して表示する必要はない」ということを教えて、その部分に関しては以前生成したものを使わせるということです。

う まくやればキャッシングはとても役に立ちます。誰も気づかないうちにサイトはより速く動くようになります。ただし正しく設定していないと、更新されるべき 部分が古いまま表示されたりして(例えば新しいニュースを投稿したのにそれが表示されないなど)、ユーザはフラストレーションを感じるでしょう。

まぁ、 ある程度の「最新でない感じ」はパフォーマンスとのトレードオフの関係で許容しなければならないでしょう。たとえば天気を表示するポートレットを使ってい るときに、たいていの人は1分間に600回もお天気サーバにアクセスするなんてことはしたくないはずです。5分ごととか、5時間ごととか、時間は何でもイ イですが、とにかくその辺で妥協するでしょうし、ちょびっと古い情報であってもパフォーマンスを考えればそれでOKでしょう。

CacheFu は(ほんの一部の例外を除いて)こういった妥協をさせません。あなたのサーバは今までより少し働く事になるかもしれませんが、 CacheFuがあなたに最新のコンテンツを届ける事を信じてください。サイトをよりコントロールしたい人にとっては、このドキュメントが助けになるで しょう。