1

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

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

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

87.png

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

87.png

即使它们是不同的文件。

现在,img 调用是

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

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

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

4

2 回答 2

2

对不起,我没有正确阅读问题。

这种行为是因为来自您的服务器的响应的 expires 标头。更新图像后,将该图像的标头设置为过期。所以浏览器得到更新的图像。

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

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

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

(if update ==1)

设置适当的标题

于 2012-04-11T04:55:06.853 回答
0

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

于 2012-04-11T05:04:26.237 回答