Smartyのcacheのコントロールで楽をするその2 | 今日もWEB更新してたら

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までサポートする必要ないだろう。