Firefox 和 Chromium 是否缓存由本地主机提供的媒体?

Firefox 和 Chromium 是否缓存由本地主机提供的媒体?

我正在开发一个 Web 应用程序,并且我已将 JavaScript 和 CSS 文件设置为具有远期过期时间。我向客户端发送消息,告知每个文件上次修改时间是一年前,并且每个文件将在一年后过期。问题是 Firefox 和 Chromium 似乎忽略了响应标头,并在每次重新加载页面时重新获取静态文件。

另一方面,Opera 的运行情况与预期一致。也就是说,它缓存的文件的有效期很远。

我正在使用 Ubuntu 10.04、Firefox 3.6.8 和 Chromium 5.0.375.125。Firefox 和 Chromium 是否默认配置为不缓存来自本地主机的文件?有没有办法更改此设置?有人知道还有什么原因可能导致它们不缓存吗?

这些是我发送回客户端的响应头:

Server    Development/1.0
Date    Tue, 31 Aug 2010 15:44:16 GMT
Content-Language    en
Expires    Wed, 31 Aug 2011 15:44:16 GMT
Vary    Accept-Language, Cookie
Last-Modified    Mon, 31 Aug 2009 15:44:16 GMT
Cache-Control    max-age=31536000
Content-Type    text/css
Content-Length    32493

谢谢!

答案1

回答你的问题,Chromium 和 Firefox,或者任何其他浏览器,都会缓存来自 localhost 的文件。问题是你使用的指令只是为了向后兼容而保留的。

换句话说,在过去这是可行的方法。通过将过期日期设置为遥远的过去,他们会强制浏览器不显示缓存中的页面。Chromium 和/或 Firefox 可能只是忽略了此指令。

另一方面,你还有其他一些不错的选择:

  • 缓存控制:无缓存:将在从缓存中提供页面之前与服务器重新验证。
  • 缓存控制:必须重新验证,浏览器应该在从缓存中提供数据之前与服务器重新验证。
  • 缓存控制:无存储,不缓存,也不将页面存储在缓存文件夹中

请记住,您仍然受制于浏览器,并且每个浏览器都有自己的方式(不幸的是)来处理这些指令。

来源:缓存控制指令揭秘

您还应该阅读此处,其中解释了基本过期机制已经发生了变化:当同时使用 Expires 和 max-age 时,max-age 指令将覆盖 Expire 标头。

来源:14.9.3 基本过期机制的修改

相关内容