Chrome不会缓存images / js / css

时间:2010-08-03 21:51:38

标签: caching google-chrome http-headers

当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

如何让它不检查服务器?

6 个答案:

答案 0 :(得分:84)

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

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

答案 1 :(得分:70)

也让我感觉到的是......我在开发者工具中检查了“禁用缓存”。去图。

答案 2 :(得分:56)

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

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

  1. 按地址栏中的Enter键。您将观察到chrome首先从缓存中读取文件,而根本不会访问服务器。

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

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

  4. 基本上 - 你应该按地址栏中的返回键。如果有效,请告诉我。

答案 3 :(得分:27)

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

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

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

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

答案 4 :(得分:4)

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

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

答案 5 :(得分:1)

我相信你在寻找

Cache-Control: immutable