更新服务器中的图像 - > 铬缓存问题


Update image in server -> chrome cache issue

每当用户上传新图片,并且图片名称保持不变(因为图片名称基于文件扩展名和用户 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"标头。