阻止浏览器在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 。
有什么想法吗?
答案 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 "<img src='gambarLimas.jpg'><br>";
运行良好
echo "<img src='gambarLimas.jpg?t=".time()."'><br>";