Smartyのcacheのコントロールで楽をするその2
Smartyのcacheのコントロールで、かなり楽が出来る。(以前の記事 )
ただ、PHPのデフォルト設定が
200 ok
no-cache
を返す設定になっている。
このままではキャッシュの効果が半減だ。Smartyが作成するサーバー側のキャッシュだけでなく、ブラウザのキャッシュも利用するとさらに効果的なのだ。
ブラウザのキャッシュを利用するにはE-tagを仕込むか、If-Last-Modified-Sinceに応答しなくちゃいけない
Smartyにはこの機能をサポートしている。
http://smarty.php.net/manual/en/variable.cache.modified.check.php
マニュアルによると
If set to true, Smarty will respect the If-Modified-Since header sent from the client. If the cached file timestamp has not changed since the last visit, then a "304 Not Modified" header will be sent instead of the content. This works only on cached content without {insert} tags.
この変数をTRUEに設定すると、SmartyはHTTP HEADERのIf-Modified-Since header を優先します。サーバー側にキャッシュされたファイルのタイムスタンプをつかい、ブラウザに304 NotModifiedを送信するかどうかSmartyが判断します。ファイルを送信する必要がないとき、Smartyは304を送信し、コンテンツは送信しません。ただし{insert}タグがテンプレートに利用されていない場合に限ります。
$smarty->cache_modified_check = true;
にしてやると良い。これで304を利用できる。If-Modified-Since が使えればE-tagまでサポートする必要ないだろう。