クライアントキャッシュとは
setCache 系メソッドは Web サーバ側でのキャッシュですが、
ユーザのブラウザなどに
ページをキャッシュさせる仕組みもあります。
サーバキャッシュとクライアントキャッシュの違いは、
クライアントキャッシュはクライアント側に保存されるため、
キャッシュが有効なら
ブラウザは Web サーバへのアクセスを行わずに済みます。
Web サーバへのアクセスを行わないので
Web サーバへの負荷を大きく軽減できますが、
一旦クライアント側で生成されたキャッシュを
サーバ側から削除することはできません。
したがって、有効時間の設定が非常に重要になります。
クライアントキャッシュの設定
クライアントキャッシュの設定は setClientCache を使用します。
$ramp->setClientCache(mode);
$ramp->setClientCache(mode, lifetime);
mode は、キャッシュのコントロールモードです。
コントロールモードについては、次の段落をご覧ください。
lifetime は、キャッシュの有効時間です。
setCache系メソッドと同様、秒数で指定してください。
コントロールモード
setClientCache で指定できるコントロールモードは
以下の通りです。
| Rampart::CACHE_NO | キャッシュしない。 |
|---|---|
| Rampart::CACHE_PUBLIC | 公開キャッシュ。 ブラウザだけでなく、プロキシにもキャッシュされる。 |
| Rampart::CACHE_PRIVATE | プライベートキャッシュ。 ブラウザにのみキャッシュされる。 |
Rampart::cache_public を使うと
プロキシサーバがページをキャッシュするので、
Webサーバの負荷を最も軽減できます。
ただし、プロキシサーバにキャッシュされたデータを
複数のユーザで共有することになるため、
もし、ユーザごとに個別の情報を出力するような場合には、
情報が第三者に漏えいする危険があります。
Rampart::cache_private は
ユーザのブラウザにのみページをキャッシュします。
ユーザごとに個別の情報を出力するような場合には
このモードを使用します。
例
使用例は以下の通り。
// クライアントキャッシュを使用しない場合。
// ブラウザは毎回Webサーバにアクセスする。
$ramp->setClientCache(Rampart::CACHE_NO);
// 公開キャッシュを使用する場合。
// キャッシュはプロキシサーバに保存される。
// 同じプロキシサーバを利用して
// 同じページを閲覧するすべてのユーザは
// 60秒間、Webサーバへのアクセスを行わず、
// プロキシサーバに保存されたキャッシュを使用する。
$ramp->setClientCache(Rampart::CACHE_PUBLIC, 60);
// プライベートキャッシュを使用する場合。
// キャッシュはユーザのブラウザに保存される。
// 60秒間に再度同じページを閲覧する場合は、
// Webサーバへのアクセスを行わず、
// ブラウザに保存されたキャッシュを使用する。
$ramp->setClientCache(Rampart::CACHE_PRIVATE, 60);
補足
setClientCache は header を出力します。
したがって、すべての出力の前に実行して下さい。