【问题标题】:Caching, Weak Etags, and Last-Modified Issues缓存、弱 Etag 和上次修改问题
【发布时间】:2011-05-25 18:31:50
【问题描述】:

我正在开发的网站上出现一些图片问题。一些图像被正确缓存并且它们的标题看起来是正确的(强 etags,正确的最后修改)。但其他图像的 etags 较弱(以 W/ 开头)和最后修改的标头始终等于当前时间。有谁知道我该如何解决这个问题?我环顾四周,似乎找不到任何有效的方法。未缓存的图像是背景图像,每次重新加载页面时都会导致背景闪烁,这很烦人。

标题:

Accept-Ranges:bytes
Connection:Keep-Alive
Content-Length:6879
Content-Type:image/jpeg
Date:Wed, 15 Dec 2010 07:41:44 GMT
Etag:W/"4e863ea-1adf-49772cd85b340"
Keep-Alive:timeout=15, max=98
Last-Modified:Wed, 15 Dec 2010 07:41:44 GMT
Server:Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.6 with Suhosin-Patch

提前感谢您的帮助。我不是这方面的专家,所以如果我遗漏了一些明显的东西,我深表歉意。

【问题讨论】:

    标签: caching http-headers etag last-modified


    【解决方案1】:

    我不确定发生了什么变化,但看起来问题已经消失了。

    标题:

    Accept-Ranges:bytes
    Connection:Keep-Alive
    Content-Length:6879
    Content-Type:image/jpeg
    Date:Wed, 15 Dec 2010 16:46:14 GMT
    Etag:"4e863ea-1adf-49772cd85b340"
    Keep-Alive:timeout=15, max=99
    Last-Modified:Wed, 15 Dec 2010 13:20:37 GMT
    Server:Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.6 with Suhosin-Patch
    

    【讨论】:

    • 可能是因为你的etag由弱变强了。
    • @JustinY,我现在也有同样的问题。我的两个脚本中的一个加载了具有强 etag 的静态图片,另一个加载了弱 etag 的静态图片。我无法理解这种情况,因为两个脚本几乎相同。你能帮忙给个建议吗?
    【解决方案2】:

    如果你想确保你的图像被缓存,你不能依赖验证头(last-modifiedetag)。为了确保缓存,您需要使用ExpiresCache-control。仅在缓存过期机制表明内容已过时后才使用验证。如果您不使用 ExpiresCache-control 标头,则内容新鲜度未定义,仅取决于浏览器的具体实现,因此在您的情况下它可能会出现意外行为。

    【讨论】:

      猜你喜欢
      • 2015-02-18
      • 1970-01-01
      • 2013-09-12
      • 2010-10-08
      • 2021-02-13
      • 1970-01-01
      • 2013-12-24
      • 2014-06-29
      • 2020-11-18
      相关资源
      最近更新 更多