【问题标题】:Understanding the difference between "Response Headers" and "Request Headers" in Firefox Developer Console (network tab) for image cache control了解 Firefox 开发者控制台(网络选项卡)中用于图像缓存控制的“响应标头”和“请求标头”之间的区别
【发布时间】:2014-02-06 02:32:04
【问题描述】:

编辑:我发现了我的问题。我错误地使用了网络检查器(在 Chrome 和 FF 中)——基本上我点击了“刷新” 并观看网络检查器,但它会重新下载 一切。您需要做的是转到 URL,然后打开网络检查器,然后转到 URL 再次(不要“刷新”,只需再次访问该 URL)。这 网络检查器将通知您从哪些资源中提取 缓存:)

原始问题如下:

我正在尝试在 Apache 中设置图像缓存设置。我在 .htaccess 中有以下 1 周的图像缓存:

FileETag MTime Size

ExpiresActive On
<FilesMatch "\.(gif|jpg|jpeg|png)$">
    ExpiresDefault A604800
</FilesMatch>

当我检查 Firefox 开发者控制台的网络选项卡时,这看起来是正确的,但我不明白为什么 请求标头 显示“无缓存”

注意:我删除了与此问题无关的行。

我还使用 PHP 动态地提供一些图像。我为这些图像设置了 2 天的缓存,但同样,响应标头显示“无缓存”。这有什么好担心的吗?刷新 Firefox 时,图像似乎没有被缓存。它们看起来正在重新下载:

任何理解这些标题的帮助将不胜感激。如果有一种简单的方法可以确定是否从缓存中提取图像,我没有看到它。

【问题讨论】:

    标签: apache .htaccess caching


    【解决方案1】:

    PragmaCache-Control 请求标头的含义相同,一个来自 HTTP 1.0,另一个来自 1.1。它用于告诉服务器或进行缓存的代理它需要资源的新版本。它不是为了告诉服务器浏览器不会缓存,或者浏览器不会遵守服务器响应的缓存控制。

    最终,服务器可以告诉用户代理“这是资源,将其缓存 1 周”,但这仍然取决于用户代理(例如浏览器)来兑现这一点。它总是可以每次都请求未缓存版本的资源,而不是不发送请求并加载本地缓存的副本。

    【讨论】:

    • 所以在我上面的例子中,当我的请求头说“no-cache”时,这是否意味着资源没有被缓存?还是仅仅意味着“我正在请求此资源的新版本(如果可用)”?当我访问其他网站时,我看到请求和响应标头的模式相似,但我想确保这看起来正常。
    • @degenerate 如果请求被发出,这意味着它没有被缓存,或者用户代理想要一个新的副本。如果浏览器要使用缓存版本,甚至不会发出请求。
    猜你喜欢
    • 2020-07-23
    • 2011-10-28
    • 2014-11-19
    • 1970-01-01
    • 2019-12-01
    • 1970-01-01
    • 2013-08-22
    • 2019-06-13
    • 2011-01-13
    相关资源
    最近更新 更多