每当用户上传新图片,并且图片名称保持不变(因为图片名称基于文件扩展名和用户 ID 值)时,chrome 不会更新缓存,并且图片看起来保持不变。
例如,用户将上传文件image.png
服务器将分析文件并将其存储为
87.png
但是,以前的文件image2000.png
也存储为
87.png
即使它们是不同的文件。
现在,img 调用是
<img src="/images/87.png">
对于这两个单独的图像,但 Chrome 没有意识到它们已更改,因此它会87.png
输出缓存的图像,而不是在刚刚更新的服务器中加载新图像。
有没有办法强制Chrome(和其他浏览器)意识到此图像刚刚更新,并从服务器而不是缓存加载图像? 还是图像需要一个新名称才能实现?
对不起,我的错,我没有正确阅读问题。
此行为是由于来自服务器的响应的过期标头。更新映像后,设置要过期的映像标头。因此,浏览器会获取更新的图像。
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
如何专门将标题设置为更新图像?
在数据库中放置一个名为"已更新"的列。因此,每次更新图像时,将此列设置为 1。
(if update ==1)
设置适当的标头
您必须正确配置Web服务器。注意服务器随映像返回的"ETag"和"Expires"标头。