サーバー上の画像ファイルを変更してもブラウザでは最新の画像ファイルに切り替わらない現象。
これはブラウザの実装によるもので、同じファイル名の画像だとローカルキャッシュが表示され続けてしまうため。
header("Cache-Control: no-cache, must-revalidate");
や
header("Cache-Control: private");
などをHTMLドキュメントのレスポンスヘッダーに出力する例が見つけられるが、画像のリクエストに対するレスポンスに出力する必要がある。
<img src=imag.jpg?2008010123596099>
smartyなら
<img src=imag.jpg?{$smarty.now}>
のように?に続けて変化する文字列を付加することで、ブラウザは異なるリクエストと解釈するので効果がある。ただし、MSではパフォーマンス低下を理由に推奨していないとおり、これでは同じ画像にもかかわらずキャッシングされなくなる(http://support.microsoft.com/kb/246960/ja)。
本来の目的通り、そのファイルの最終更新時刻を付加すればよい。smartyなら
<img src=imag.jpg?{$nameFileImage|filemtime}>
これでファイルの更新タイムスタンプでユニークになり負荷を抑えられる(ファイルが必ず存在するものとする)。