0

使用Cache-Controland Expiresheader 以使页面不会在 10 年内过期:

Cache-Control: max-age=315360000
Expires: Sun, 19 Jul 2020 18:06:32 GMT

使用第 1 行的结果是否与第 2 行相同?

<link href="/public/doc.css?v=128" ... >

<link href="/public/doc_v128.css" ... >

我在想也许某些浏览器会将其?v=128视为更具动态性的内容并在 10 年到期之前重新加载它?

否则,这两个文件都将在 10 年内到期,并且当 CSS 发生更改时,128可以将其更新为 129 并且它会被加载并具有全新的 10 年到期日期?

(同样适用于 javascript.js文件)

4

1 回答 1

4

在查询字符串中使用更改值可能对您不利。根据 Google 的 Page Speed Optimize 缓存性能最佳实践:

不要在静态资源的 URL 中包含查询字符串

大多数代理,尤其是 3.0 版的 Squid,不缓存带有“?”的资源。即使响应中存在 Cache-control: public 标头,在他们的 URL 中也是如此。要为这些资源启用代理缓存,请从对静态资源的引用中删除查询字符串,并将参数编码为文件名本身。

此外,您可能需要重新考虑 10 年。根据 RFC 2616 的Header Field Definitions > Expires部分,最长为一年。

要将响应标记为“永不过期”,源服务器会在响应发送后大约一年发送 Expires 日期。HTTP/1.1 服务器不应该在未来一年以上发送 Expires 日期。

于 2010-07-19T19:37:45.803 回答