【问题标题】:Chrome doesn't cache images/js/cssChrome 不缓存图像/js/css
【发布时间】:2011-03-24 23:35:58
【问题描述】:

当 Chrome 加载我的网站时,它会在显示文件之前检查服务器以获取文件的更新版本。 (Images/Javascript/CSS) 它从服务器获取 304,因为我从不编辑外部 javascript、css 或图像。

我想要它做的是在不检查服务器的情况下显示图像。

这是标题:

Connection:keep-alive    
Date:Tue, 03 Aug 2010 21:39:32 GMT    
ETag:"2792c73-b1-48cd0909d96ed"    
Expires:Thu, 02 Sep 2010 21:39:32 GMT    
Server:Apache/Nginx/Varnish

如何让它不检查服务器?

【问题讨论】:

标签: caching google-chrome http-headers


【解决方案1】:

确保您在开发者工具中未选中/禁用 disable cache 复选框。

【讨论】:

  • 这帮助我解决了同样的问题。万一你们都卡住了,在开发者工具中,点击右下角的齿轮图标。
  • 我想我要写一个图像服务页面,只是为了强制缓存控制。谢谢!!
  • 我只是把我的手臂举到空中要求上帝惩罚我的愚蠢。还禁用了缓存...
  • 我的键盘和椅子之间存在问题。
【解决方案2】:

对我来说,这是自签名证书:

https://code.google.com/p/chromium/issues/detail?id=110649

在上面的链接中,Chromium 开发人员标记了错误:#WontFix,因为规则是:“证书的任何错误都意味着页面不会被缓存。”

因此,Chrome 不会缓存来自具有自签名证书的服务器的资源。

【讨论】:

  • 页面上有很多很好的答案,但这必须是任何https页面的关键第一步
  • 我遇到了同样的问题。有什么解决办法吗?
  • @TumainiMosha 您可以将自签名证书添加到浏览器存储中。然后它会变绿并被缓存。
  • 你拯救了我的一天!
  • 现在正在缓存中。在版本 63 (mac OS) 上
【解决方案3】:

我相信你正在寻找

Cache-Control: immutable

【讨论】:

【解决方案4】:

哇!我在很长一段时间内都面临同样的问题。

我会告诉你为什么你会遇到这个问题。你的标题很好。由于您尝试刷新页面的方式,您收到 304。主要有3种方式-

  1. 在地址框中按回车键。你会观察到 chrome 先从缓存中读取文件,根本不去服务器。

  2. 按 f5,这将验证文件是否已过时(可能是您正在刷新的方式)

  3. 按Ctrl+f5,这是无条件重新加载所有静态资源。

所以基本上 - 你应该按地址栏中的返回键。让我知道这是否有效。

【讨论】:

  • 在地址框中按 Enter 仍会重新加载。在新标签或同一标签中复制粘贴网址,然后按 Enter 不会。
  • Google Chrome 版本 58.0.3029.110 - 在地址栏中单击 Enter 对我不起作用,但将 URL 复制粘贴到新选项卡中,然后 Enter 起作用...因为原因.. . :)
  • @Tushar - 有什么方法可以避免在 F5 的情况下将请求发送到服务器?到目前为止,它将请求发送到服务器,然后服务器以 304 响应,然后从缓存中加载。我希望浏览器在有人按 F5 时直接从缓存中加载它,因为我的资源在磁盘缓存中可用。
【解决方案5】:

您的请求标头是什么样的?

Chrome 将在请求的 Cache-Control 标头 if you press Enter in the location bar 上设置 max-age:0。如果您使用超链接访问您的页面,它应该使用缓存,正如预期的那样。

【讨论】:

  • 请求头也设置为max-age:0用于页面刷新,这是有道理的。使用链接进行测试..
  • @Jacob Krall,我可以扭转这个问题。即使我使用超链接访问页面,我该怎么做才能让 Chrome 总是 访问服务器以获取图像 url。我已经设置了所有缓存控制标头等,但是当通过锚导航时,chrome 从不刷新这些图像。 IE 和 FF 按预期工作,每次都会刷新。
  • @thedk: 你把缓存控制头设置成什么了?
  • @ChrisNicholson:这对我有用。我使用后退/前进按钮来消除服务器往返。
  • A)。如果你点击 refresh 除了使用地址栏,Chrome 也会设置 max-age:0。 B)这两种行为在 Firefox 中似乎也是如此。我无法与其他浏览器对话。
【解决方案6】:

如果您希望 Chrome 缓存您的 JS/CSS 文件 - 服务器将需要设置“Cache-Control”标头。它应该看起来像:

Cache-Control:max-age=86400(如果你想缓存一天的资源)。

【讨论】:

  • 感谢您的回复。以下是新的标题: Cache-Control:max-age=2592000 Connection:keep-alive Date:Tue, 03 Aug 2010 21:57:36 GMT ETag:"2792c73-b1-48cd0909d96ed" Expires:Thu, 02 Sep 2010 21 :57:36 GMT 服务器:Apache/Nginx/Varnish 但它仍然无法正常工作。 Chrome 仍会检查服务器是否有修改。
  • 您如何确保 Chrome 检查服务器是否有修改?你在用 Fiddler 之类的东西吗?
  • @Rahul Ctrl-Shift-I 在 Chrome 中
  • 注意 chrome 默认缓存 JS/CSS,没有缓存控制标头,至少对于常规页面加载。在重新加载或 shift-reload 时,它会从服务器获取新的。
  • 在 devconsole 上,如果 chrome 加载缓存文件,您应该在文件的大小列上看到(从缓存中)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-26
  • 1970-01-01
  • 2013-10-25
  • 2017-01-04
相关资源
最近更新 更多