2012-04-11 53 views
1

每当用户上传新图像,并且图像名称保持不变(因为图像名称基于文件扩展名和userid值),chrome不会更新缓存,而且图像看起来保持不变。更新服务器 - > chrome缓存问题中的图像

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

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

87.png 
然而

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

87.png 

即使它们是不同的文件。现在

,在IMG呼叫

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

两个单独的图像,但铬犯规意识到他们正在改变,因此它的缓存图片87.png输出加载这是刚刚更新服务器的新形象,而不是。

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

+0

您使用哪个Web服务器? Apache的? – 2012-04-11 05:05:01

+0

数据来自数据库吗? – 2012-04-11 05:08:51

回答

2

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

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

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

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

在数据库中放入一个名为updated的列。所以每次更新设置此列的图像1.

(if update ==1) 

一套适当的报头

+0

我需要这个在用户上传照片后自动发生,因为你的平均乔不会想要甚至不知道按Ctrl-r – JimmyBanks 2012-04-11 05:02:58

+0

对不起,没有正确地阅读这个问题 – 2012-04-11 05:06:46

+0

嘿谁投票使它成为upvote,我正确回答 – 2012-04-11 05:10:04

0

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