キャッシュをめぐるApache2.2との格闘は,まだ続く...
という事実があるのだが,Expiresヘッダに何を指定すれば良いのか?というのが問題だ. (なお,ここでのURLはGET時のURLではない.試しにrewriteでパラメータを含まないGETでアクセスできるようにしてみたが,無駄だった...) 今日調べてみたところでは,Expiresで指定している期間がくるまではApacheの設定が CacheIgnoreCacheControl off 整理すると,
ということになる.キャッシュを好きなときに更新できないのは非常に困る. 仕方がないので,そういうときにはキャッシュファイルを手動で消してしまうという荒技を使うことにした. 以下のような感じで,CacheRootをサーバ全体ではなく各VirtualHost内に対して指定して,特定のVirtualHostのキャッシュを全消しする,という運用ができるように設定した. httpd.confより 〜 CacheDirLevels 2 CacheDirLength 1 <VirtualHost kamoland.com> 〜 CacheRoot "/var/cache/apache2/disk_cache/vh1" CacheMaxExpire 604800 CacheEnable disk / CacheDisable /rss/ </VirtualHost> <VirtualHost www.rensa.info> 〜 CacheRoot "/var/cache/apache2/disk_cache/vh2" CacheMaxExpire 259200 CacheEnable disk / CacheDisable /rss/ </VirtualHost> キャッシュのクリアが必要なときは,Apacheを止めて rm -rf /var/cache/apache2/disk_cache/vh2/* で,話を戻すと,このようにキャッシュクリアの手段が一応あるという前提なら,CGIのレスポンスで返すExpiresヘッダは,ある程度長めにとっても良かろうと思える. ...今のところ,リクエスト日から3日後にして様子を見ている. →次回に続く |