如何防止浏览器图像缓存?

时间:2012-01-05 20:37:41

标签: php image caching

阻止浏览器在PHP中缓存图像的最佳方法是什么?

我已经尝试了标头(方法:

header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

但是,除非手动清除浏览器的缓存,否则似乎无效。

我的图片被替换为相同的名称,例如 avatar.png 作为用户的可更新头像,但是当它更新时,浏览器会保留旧版本。

即使原件被删除并添加了新原件,浏览器仍然保留旧的 avatar.png

有什么想法吗?

4 个答案:

答案 0 :(得分:15)

只需在图片网址的末尾添加一个随机参数即可。时间戳也可以很好地用于此。

例如在PHP中:

"http://domain.com/img.png?t=" . time();

浏览器将始终将此图片加载为新图片。你应该小心使用它,它会使加载时间变慢。

答案 1 :(得分:6)

只要插入自己的图像,就无需每次都阻止图片缓存。您可以使用filemtime($ imgPath)来检查上次更改图片的时间。

例如:' http://example.com/img.jpg?last_picture_update=' 。 filemtime($ imgPath)

答案 2 :(得分:2)

在同一个浏览会话中,如果您使用相同的IMG src,浏览器通常会重新使用其保留在内存中的图像副本,而不管缓存设置如何。这似乎是你在这里发生的事情。

我总结了“更新图片”问题的一些常见解决方案here

答案 3 :(得分:-2)

谢谢,这次为我跑来跑去

未运行<

echo "&lt;img src='gambarLimas.jpg'><br>"; 

运行良好

echo "&lt;img src='gambarLimas.jpg?t=".time()."'><br>";