对于 10 年后过期的缓存控制,使用 doc.css?v=128 与 doc_v128.css 完全相同吗?

发布于 2024-09-10 08:53:32 字数 537 浏览 1 评论 0原文

当使用 Cache-ControlExpires 标头以使页面在 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 文件)

When using Cache-Control and Expires header so that a page won't expire in 10 years:

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

will using line 1 have identical result as line 2?

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

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

I was thinking maybe some browser will take the ?v=128 as a somewhat more dynamic content and reload it before the 10 year expiration?

Otherwise, both files will expire in 10 years and when there is changes to the CSS, the 128 can be updated to 129 and it will be loaded for sure and have a brand new 10 year expiration date?

(the same goes for javascript .js files)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜灵血窟げ 2024-09-17 08:53:32

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

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

大多数代理,尤其是 Squid up
从3.0版本开始,不缓存
带“?”的资源甚至在他们的网址中
如果 Cache-control: 公共标头是
存在于响应中。启用
这些资源的代理缓存,
从引用中删除查询字符串
到静态资源,而不是
将参数编码到文件中
自己命名。

另外,你可能需要重新考虑 10 年。根据标头字段定义> RFC 2616 的过期部分,最长一年。

要将响应标记为“永不过期”,
源服务器发送过期日期
从那时起大约一年
响应已发送。 HTTP/1.1 服务器
不应发送更多过期日期
未来一年内。

Using a changing value in the querystring may work against you. According to Google's Page Speed Optimize caching Performance Best Practice:

Don't include a query string in the URL for static resources

Most proxies, most notably Squid up
through version 3.0, do not cache
resources with a "?" in their URL even
if a Cache-control: public header is
present in the response. To enable
proxy caching for these resources,
remove query strings from references
to static resources, and instead
encode the parameters into the file
names themselves.

Also, you may want to reconsider 10 years. According to the Header Field Definitions > Expires section of RFC 2616, one year is the max.

To mark a response as "never expires,"
an origin server sends an Expires date
approximately one year from the time
the response is sent. HTTP/1.1 servers
SHOULD NOT send Expires dates more
than one year in the future.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文