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

时间:2012-04-11 04:49:42

标签: php html google-chrome

每当用户上传新图像,并且图像名称保持不变(因为图像名称基于文件扩展名和用户ID值)时,chrome不会更新缓存,并且图像看起来保持不变。

例如,用户将上传文件image.png

服务器将分析文件并将其存储为

87.png

但是,之前的文件image2000.png也存储为

87.png

即使它们是不同的文件。

现在,img调用是

<img src="/images/87.png">

对于两个单独的图像,但chrome没有意识到它们已被更改,因此它输出缓存的图像87.png,而不是在刚刚更新的服务器中加载新图像。

有没有办法强制chrome(和其他浏览器)意识到这个图像刚刚更新,并从服务器而不是缓存加载图像?或者图像是否需要有一个新名称才能实现?

2 个答案:

答案 0 :(得分:2)

抱歉我的不好,我没有正确地阅读这个问题。

此行为是因为服务器响应的过期标头。更新图像后,将该图像的标题设置为过期。所以浏览器会获得更新的图像。

header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

如何将标题专门设置为更新图像?

在数据库中放入一个名为updated的列。因此,每次更新图像时,此列都会设置为1。

(if update ==1)

设置合适的标题

答案 1 :(得分:0)

您必须正确配置Web服务器。注意服务器随图像返回的“ETag”和“Expires”标题。