IEでP_BLOGのトップページがキャッシュされてしまう問題の対処

前回書いた応急処置は、あんまりテストしてなかったんだけど、IEでブログを触っていて、全く応急処置にはなっていない事がわかり、新たに調べ直し対処法を考えた。

というのも、IEでブログの管理者ユーザにログインしてトップページを表示した後に、ログアウトし、再度トップページを表示したら、なんと管理ユーザでログインした状態のトップページが表示されるではないか!(実際にはログインされていないのでコメントの修正とかを押すとクッキー切れと同じ状態になる)

根本的にIEで最新の状態が表示されないのはなぜなのか?という事を調べ始めると、どうやらファイルのタイムスタンプを比較して同じならばキャッシュを表示という動きをしているようだという事がかわった。しかし、IEのこのHTMLタグのno-cacheとかは無視して、タイムスタンプ優先のような意味不明の独自仕様は納得いかんな。

と言っていても仕方ないので、サーバにログインしてtouchコマンドでタイムスタンプを更新すると、なるほど確かに最新の情報が表示される。その後も何回かリロードしてみてもアクセス数はカウントされる。んで、ウィンドウを閉じて再度トップページを開くとまたキャッシュが表示されるようになるので、もう一度タイムスタンプを更新してリロードしてみると、ちゃんとアクセス数がカウントされた。これで大丈夫のようだ。ということで、タイムスタンプを定期的に変更することにした。

cronで行う場合

0 * * * * /usr/bin/touch /home/userID/www/blog/index.php

crontab -e で開いたファイルに上記を記述することで毎時間、index.phpのタイムスタンプが更新される。ファイルパスなどは自分の環境に合わせて変更してください。タイムスタンプを指定の時間で更新したい場合はこの方法が良いかと。

phpで行う場合

// Internet Explorer cache measures
touch ("index.php");

P_BLOGのルートにあるindex.php内の一番下(どこでも良いけど)に上記を記述することで、index.phpにアクセスがある毎にタイムスタンプが更新される。cronを使えない環境や、更新が頻繁な場合はこちらの方法が良いかと。

実際にファイルの中身は更新されてないのに、index.phpのタイムスタンプを無駄に更新するのは、あんまり好ましくない気がするけど、取りあえずこの方法で良いかな。

居ないと思うけど、前回の対処法を試してしまっていたら、すいません。前回の分は訂正してこっちにリンク貼っておきます。

コメントをどうぞ

メールアドレスが公開されることはありません。 が付いている欄は必須項目です