gpt4 book ai didi

google-chrome - Chrome 拒绝缓存 Javascript

转载 作者:行者123 更新时间:2023-12-04 15:44:09 27 4
gpt4 key购买 nike

我对浏览器缓存相当陌生。我试图让 Chrome 使用查询参数永久缓存任何静态文件(出于缓存破坏目的)。我已经将 Cache-Control 和 Expires header 设置为 future ,这应该足以说“永远缓存这个”。生成的响应 header :

HTTP/1.1 200 正常
缓存控制:公共(public),最大年龄=315360000
连接:保持事件
内容编码:gzip
内容类型:application/x-javascript
日期:格林威治标准时间 2014 年 7 月 16 日星期三 09:29:54
最后修改时间:2014 年 7 月 16 日星期三 03:44:14 GMT
服务器:nginx/1.6.0
传输编码:分 block
变化:接受编码

Firefox 和 Safari 似乎对所有 cachebusted (?v= query parameter) 文件都尊重这一点。 Chrome 主要遵循指令,除了 Javascript。大多数情况下,它使用 If-Modified-Since header 进行请求,而不是从缓存中加载。有时其中一个会从缓存中加载,而另一个会产生导致 304 的请求。通常当从新选项卡加载页面时,它会从缓存中加载,但如果您在地址栏中按 Enter 键则不会。

Debugger

我观察到其他网站使用我认为完全相同的标题,并且文件总是从缓存中加载。即使您进行刷新,其中一些也会从缓存中加载。

我知道缓存行为有些不可预测,但我想确保我没有监督让 Chrome 这样做的东西?

最佳答案

我在 chrome 上遇到了同样的问题,经过几个小时的反复试验,我发现,chrome 似乎与 Vary Header 有问题

我的 Apache/.htaccess 配置中有这个片段,只要我评论“Header append Vary Accept-Encoding”行,Chrome就会开始缓存.js和.css文件

  <FilesMatch "(\.js\.gz|\.css\.gz)$">
# Serve correct encoding type.
Header set Content-Encoding gzip
# Force proxies to cache gzipped & non-gzipped css/js files separately.
#Header append Vary Accept-Encoding
</FilesMatch>

在通过我们的 nignx 服务器运行请求时它仍然无法工作,因为它在交付 gzip 压缩文件时也添加了 Vary: Accept-Encoding header 。

到目前为止,我可以猜测这是一个仅在 chrome 上发生的问题,作为一种解决方法,我会更改配置以仅在 chrome(尚未检查 safari)不是客户端时才附加 header ,直到有更好的修复:
<FilesMatch "(\.js\.gz|\.css\.gz)$">
# Serve correct encoding type.
Header set Content-Encoding gzip
# Force proxies to cache gzipped & non-gzipped css/js files separately.
BrowserMatch "Chrome" ChromeFound
Header append Vary Accept-Encoding env=!ChromeFound
</FilesMatch>

关于google-chrome - Chrome 拒绝缓存 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24777444/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com