我观察到CSS文件未在Chrome浏览器上缓存。我的应用程序由Angular-CLI构建,所有必需的缓存控制头和Expires头设置为5分钟:
Accept-Ranges:bytes
Cache-Control:max-age=600
Content-Encoding:gzip
Content-Type:text/css
Date:Wed, 13 Sep 2017 05:11:17 GMT
ETag:W/"441246-1505278984000"
Expires:Wed, 13 Sep 2017 05:21:18 GMT
Last-Modified:Wed, 13 Sep 2017 05:03:04 GMT
Server:Apache-Coyote/1.1
Transfer-Encoding:chunked
Vary:Accept-Encoding
使用相同的响应头设置的JS文件按预期缓存。 css文件也在Firefox Mozilla中缓存。 我搜索了帖子和几篇帖子的建议是:
有时,如果存在任何SSL错误,Chrome会自动缓存呈现自签名证书和使用HTTPS的资源。但在我的情况下,所有其他文件,如.js,.png文件都在同一个频道上运行并被缓存。
Transfer-Encoding: chunked
导致Chrome上的缓存出现问题?它在FireFox中工作正常。
gzip压缩功能不适用于Chrome:https://github.com/expressjs/compression/issues/64
任何指针/建议?
答案 0 :(得分:1)
如果资源文件有Transfer-Encoding:chunked
响应标头,Chrome似乎不会缓存它。即使资源文件的大小很小,也会设置此响应标头。我认为标头是根据http服务器配置自动设置的。此配置可以基于文件的大小等。
由于我无法控制服务器配置以设置任何HTTP协议设置,因此我
最终设置了响应头:Transfer-Encoding: identity
。
使用此响应标头,http服务器不会进一步修改标头并放置Content-Length
标头。通过响应Content-Length
标题,Chrome可以清楚地了解资源文件是否可以缓存。
答案 1 :(得分:0)
我在一个网站上遇到同样的问题,但是将同一个网络应用程序部署到另一个网站(在同一个IIS上),我得到了所有缓存的内容。 回收应用程序池没有帮助。
只有在停止并启动IIS后,两个网站才会在Chrome中缓存CSS和JS文件。打败了我,但你可以尝试一下。
答案 2 :(得分:0)
不知道这是否是您的情况,但是,我遇到了同样的问题,当我开始对域使用正确的SSL证书时,问题消失了。