【问题标题】:Cache Control Working Differently for Different Browsers?不同浏览器的缓存控制工作方式不同?
【发布时间】:2015-04-02 04:32:25
【问题描述】:

提供一堆图像。

我在 HTTP 响应标头中设置了 Cache-Control: max-age:3000 并指定了 ETag

当客户端请求同一个文件时,我回复304,因为它们只是图像文件,并且是相同的。

也许我误解了缓存,但是:

  1. 客户端不应该只在 max-age period 结束了吗?
  2. 客户端从服务器接收到304时,不应该缓存图片并从缓存中显示出来吗?

在 Firefox 中它没有做任何事情。在 Chome 中,它在 max-age 之前请求文件,但是当它收到304 响应时,它会显示缓存中的图像。

服务器是节点服务器。如果您认为这有助于更好地回答,我可以分享相关代码。虽然,此时我正在寻找可能出现问题的指针/提示。

我做错了什么,但似乎无法弄清楚是什么。

【问题讨论】:

    标签: node.js http caching cache-control


    【解决方案1】:

    你的语法错误;它是“max-age=3000”

    【讨论】:

    • 泰。更正了。但它仍然不起作用。在请求资源时我需要做些什么吗?再次尝试获取资源的请求标头有cache-control: no-cache,这是我做错了吗?
    【解决方案2】:

    如果您使用 HTTPS 并且拥有旧版本的 Firefox,则问题可能是由于您的响应标头中缺少 Cache-Control: public 引起的。然而,这在几年前就已修复:

    https://bugzilla.mozilla.org/show_bug.cgi?id=531801

    请求标头中的 Cache-Control: no-cache 表示 Firefox 中的强制刷新(例如,在 Windows 上使用 Ctrl+F5)。您是在强制重新加载页面还是只是在新的 Firefox 实例中重新访问该页面?

    您可以通过转到“about:cache”或使用HttpWatch 之类的工具来检查 Firefox 缓存中图像的状态。

    【讨论】:

    • 事实上,我正在强制重新加载页面。不幸的是,我需要在“一轮”活动完成后进行重置,如果用户想要进行另一轮活动。虽然我可以做一些 javascript 来回到原始状态,但 location.reload(true); 对我来说更容易回到原始状态进行另一轮活动。那是令人困惑的firefox吗? Chrome 不会受到强制重新加载的影响。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 2018-01-07
    • 2015-03-11
    • 2015-11-16
    • 1970-01-01
    • 2011-07-17
    • 2017-12-10
    相关资源
    最近更新 更多