【问题标题】:Update image in server -> chrome cache issue更新服务器中的图像-> chrome 缓存问题
【发布时间】:2012-04-23 09:43:24
【问题描述】:

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

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

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

87.png

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

87.png

即使它们是不同的文件。

现在,img 调用是

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

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

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

【问题讨论】:

  • 您使用哪个网络服务器?阿帕奇?
  • 数据是否来自数据库?

标签: php html google-chrome


【解决方案1】:

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

此行为是由于服务器响应的 expires 标头造成的。更新图像后,将该图像的标头设置为过期。所以浏览器会得到更新后的图片。

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

如何具体设置headers来更新图片?

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

(if update ==1)

设置适当的标题

【讨论】:

  • 我需要在用户上传照片后自动发生这种情况,因为您的普通乔不会想要甚至不知道按 ctrl-r
  • 嘿,谁投了反对票,就把它当作赞成票,我回答正确
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2011-02-14
    • 2013-04-15
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    相关资源
    最近更新 更多