文書操作
どこでキャッシュされるのか?
本質的には3つの場所でキャッシュされることになります
本質的には3つの場所でキャッシュされることになります。
- Zopeの内側でのキャッシング
- Zopeの内側でキャッシュされるデータは、Zope が直接生成しているわけですが、これは常に時間を消費するようなものではありません。一般にZope内のキャッシングはあまりスピードアップに後見するわ けではありませんが、コンテンツが変更された場合には、Zope/Ploneはこの変更を認識しやすく、結果として新しいコンテンツを表示しやすいと言う 事になります
- プロクシサーバでのキャッシング
- このタイプのプログラムは、ブラウザとZopeの中間に位置しま す。たとえば「Jane」というユーザがページをリクエストしたときには、彼女のリクエストはプロクシサーバに届けられます。プロクシサーバはZopeに このコンテンツを生成させるかどうかを決めます。ほとんどのケースでは、プロクシサーバはこの情報をすでに持っていて、コンテンツをJaneに返します。 プロクシサーバはこういう動きをすることに最適化されているわけですから、この動作はとても速いです。プロクシサーバが直接Janeに送る事のできないコ ンテンツに関してはZope にリクエストがいきます。いくつかのケースではプロクシサーバはこのコンテンツについて知り、そのうち直接送る事ができるようになるでしょう。オープン ソースのプロクシサーバとしてとても有名なのはSquidです。そしてCacheFuはSquidと共に機能するように最適化されています。より一般的で 拡張性に富んだウェブサーバであるApacheもキャッシングをすることができます。ただしApacheはSquidが持っている機能すべてを持っている わけではありません。特にキャッシュしたコンテンツの消去機能がありません。Apacheは特定のものに対するプロクシキャッシュとして利用することはで きますが、CacheFuがSquidと同じくらいApacheの機能を有効活用することはできないでしょう。というわけで、トラフィックの多いサイトで はSquidを利用するとよいでしょう。もちろんトラフィックの少ないサイトでも効果はありますが、劇的な効果を生むわけではありませんし、新しいソフト を導入する理由にはならないかもしれません。
- ブラウザでのキャッシング
- ほとんどすべてのブラウザはウェブページ や画像をキャッシングすることができます。ブラウザがキャッシングをすると、同じページや画像をブラウザ自身が返す事ができるためネットワークを経由する 必要がなくなり、明らかに反応は速くなります。Zopeやプロクシサーバがリクエストがあったことを知る事がないようなケースもあるでしょう。しかしブラ ウザ側で行われる一般的な技術は、すべてのウェブブラウザが扱えるわけではありませんし、CacheFuがキャッシュするコンテンツも「最新状態ではな い」というリスクなしにブラウザが扱えるものではありません。
以上のようなキャッシングに加えて、他にも4つほどキャッシングされうる場所があります。
- ZSQLメソッドやデータベースなどでのキャッシング
- Plone 内からリレーショナルデータベースに接続するような場合には、ZSQLメソッドの結果をキャッシュすることができます。たとえばSQLメソッドが毎秒呼ば れていたようなアプリケーションで、5分に一度だけクエリするようなことも可能です。同様にいくつかのデータベースではそれ自身にリクエストやレスポンス をキャッシングするようなメカニズムを備えているものもあります。
- LDAPやリレーショナルデータベースに対する認証でのキャッシング
- Plone はユーザデータの特別な保存場所に対してユーザ認証をすることができます。一般的なのはLDAPやリレーショナルデータベースでしょう。これらの異なる種 類のサーバに対して異なるアドオンプロダクトが存在しています。こういったアドオンプロダクトには認証をキャッシングする機能が備わっているものがありま す。つまり、ページや画像を保存するわけではなく、たとえば「joelburton」はこのシステムのユーザであり、そのパスワードは 「jUnEROx!」であり、システムのマネージャである、というようなことを保存するのです。そうすることで、リクエストがあるごとにLDAPサーバを 煩わせることなく、このシステムのスタッフであるということを信用するわけです。
- ZODBでのキャッシング
- (ふ つうPloneのコンテンツすべてを保持する)ZODBはそれ自身にオブジェクトをキャッシュする機能があります。言い換えれば、誰かが「news- items/project-a」というコンテンツを見たとすると、 ZODBは何分かの間それを保持し、さらにそのコンテンツにリクエストがあった場合には、メモリにコピーされたものを使います。ただし、これは「生の」オ ブジェクトであり、それが呼ばれた結果物でもなければ、スキン化されたものでもありません。この種のキャッシングは透過的であり、最新のものなので、全然 悪い事ではありません。
- ZEOでのキャッシング
- ZEOは巨大なPloneサイトを複数のサーバでスケーリングす る技術です。ZEOにおいては分離されたオブジェクトが一つのサーバに保存され、あるものは他のサーバに保存されます。ZEOは個々のサーバに、オブジェ クトをキャッシュする準備ができたことを知らせます。そして同じサーバがそのオブジェクトを必要としたときにそのプライベートコピーを利用するのです。こ のキャッシングはZODBのキャッシングに非常によく似ており、同様に透過的で有効です。
これら4つのタイプのキャッシング はCacheFu に利用されません。ZODBやZEOのキャッシングは完全に透過的に機能し、何の影響も受けません。他の二つはアプリケーション特化で、プログラマー、サ イトを構築する人の影響を受けます。CacheFuはこれらの機能には関与せず、CacheFuのキャッシングはこれらのキャッシングの上で働きます。

