CacheManager
Zope の Cache Manager は二つあります。
それぞれの特徴と設定を記述します。
- RAM cache Manager
RAM cache Manager は、Zope が自分でオンメモリに rendering 後のオブジェクトを保持するためのキャッシュマネージャです。
設定に必要な項目は REQUEST variables (REQUEST オブジェクト内の変数リスト)です。あとは Threshold とか age とか clean up はデフォルト値でもとりあえず大丈夫でしょう。基本的にはダメそうなら短かくするしかないですが。
Zope の場合、rendering した後のデータは、たとえば、AUTHENTICATED_USER によって違うことは普通です。ですから、最低でもこの変数は指定する必要があるでしょう。また、ログインしてない場合はANONYMOUS_USER がセットされるようですので、エントリとしてはこれを入れておくとよいかもしれません。
それから、HTTP_ACCEPT_LANGUAGE も重要です。特に Plone のように国際化されたプロダクトを使う場合にはかなり重要でしょう。
ただ、全部が必要かというとそうではないです。ニュースページなどの場合には HTTP_ACCEPT_LANGUAGE だけあれば十分ですし、もっと他のことが必要になるページもあるでしょう。index_html のようなものの場合には、上記の全てが必要になるでしょう。
で、ここまででキャッシュマネージャを定義したら、それを、キャッシュさせたいオブジェクト(index_html とか news)に適用します。これは、Cache Manager の Associate タブから行うこともできますが、RAM cache の場合、適用したいオブジェクトはそんなに一杯ないはずです(あると困ると思う)。 一杯のリストの中から設定するよりも、ZMI でキャッシュさせたいオブジェクトにいき、Cache タブから選ぶほうが簡単なこともあるでしょう。
RAM cache Manager は、上記のREQUEST variables の組合せの数(のうち、キャッシュすることが望ましいもの)だけ作り、それぞれのパターンに応じたコンテンツにそれを適用することとなります。
但し、RAM cache Manager では、logo.jpg のような単純な画像をキャッシュするには向きません。それには HTTP cache Manager を使います。
- HTTP cache Manager
HTTP cache Manager は Zope 以外の、例えば、Apache とか Squid のようなHTTP キャッシュ機構を持った別のサーバに「キャッシュしてもいいよ」と伝えるためのものです。
例えば、Zope を使用していると、logo.jpg 以外にも細かなアイコン類などで大量の img タグが使用されていることは容易に想像が付くでしょう。また、image 以外にも .css なども Plone ではかなり大きく、そして多いことは言えます。しかし、これらのファイルが変更されることはあまりありません。
しかし、生でZope を使った場合には、これらは全て、毎回 Zope(ZServer)から出力されます。これは、ちょっともったいないです。
- なお、css の一部には dtml が使われているものがありますので、そういうものは RAM cache Manager を使わないとだめです。
ApacheConf2 で記述したような設定と、Zope 側での HTTP cache 設定をくみあわせることにより、そのようなものに対する効果は絶大なものとなります。全然、速度が違います。
設定は簡単で、インターバル と anonymous だけに適用するか否かを選べばいいです。 Cache anonymous connections only? のチェックを外して、gif/jpg/png に適用するだけでも効果は見こめると思います。
適用するファイルを、RAM cache Manager と同様に、Associate タブから選んで、クリックしていけば ok です。