2013年2月6日水曜日

[Web]キャッシュされた画像の対策

画像ファイルを同じ名前で更新しても、クライアントにキャッシュされた画像があると新しいファイルが表示されず、キャッシュされたファイルが表示されます。

HTMLのメタタグでキャッシュ制御を行っても、それはHTML自体のキャッシュであって、個別の画像ファイルについては、制御出来ないようです。

ファイル名を変えるのが一番の対策なのですが、制限によりそれが出来ませんでした。

そこでとった対策は、画像のファイル名にURLパラメーターをつける事です。


画像
上の「?abc」の部分です。
これを入れるとブラウザ側は「image.jpg?abc」で一連のファイル名と記憶するので、ファイルを入れ替えた時は「image.jpg?efg」とすれば、新しいファイルとして読み込んでくれます。

今回はphpでの対応が可能でしたので、uniqid()関数を使って対応しました。
画像
気になる点としては、ブラウザがキャッシュすることによってサーバーの負荷が軽減されているのに、毎回読ませることになってしまう所です。

この点の対策としては、パラメーターに設定する値を最終更新日時のハッシュ値とかタイムスタンプなどにしておけば、更新されないうちは同じキャッシュにヒットします。

諸事情により、今回はuniqid()での対応としました。

0 件のコメント: