页面未在浏览器中缓存

时间:2017-02-01 09:42:14

标签: tomcat browser-cache tomcat8 http-caching

我正在使用apache tomcat服务器并且有一个Web应用程序呈现几个js,css和图像文件。我想确保浏览器缓存这些文件,以便每次都不要求它们。但是,我注意到有些文件正在缓存而其他文件则没有。我发现应用程序的响应标题已过期:" 1969年12月31日晚上7点"。经过this后,我从web.xml中删除了tomcat安全约束,成功删除了头文件。我还在我的应用程序中将Expires标头配置为从现在开始的1周。这也没有确保页面被缓存。

在此之后,我将Cache-Control标头配置为public,并将max-age设置为1周。这些变化都没有帮助我。此外,缓存但未缓存的页面具有与以下相同的标题:

HTTP/1.1 200 OK
Cache-Control: max-age=604800, public
ETag: 240983
Last-Modified: Fri, 09 Sep 2016 18:49:42 GMT
Date: Wed, 01 Feb 2017 07:34:25 GMT
via: HTTP/1.1 ab-d-klt-tom1
Expires: Wed, 08 Feb 2017 07:35:29 GMT
Content-Type: application/x-javascript
Transfer-Encoding: chunked
Content-Encoding: gzip
Vary: Accept-Encoding
X-FRAME-OPTIONS: SAMEORIGIN
X-Powered-By: Servlet/3.0
X-UA-Compatible: IE=edge
Server: Apache 

除此之外,我还尝试了here所述的ExpiresFilter而没有任何运气。

编辑:我的应用程序部署在具有Tomcat且没有SSL的Windows环境中时,成功缓存了浏览器中的所有文件。

但是,当应用程序部署在Linux环境中时,Tomcat和SSL不会缓存文件。 SSL会导致这种情况吗?

1 个答案:

答案 0 :(得分:2)

您需要摆脱SSL证书错误。 Chrome不会缓存此类错误的资源。 有关更多信息,请查看以下Chromium问题: 110649如果使用HTTPS,浏览器不会缓存文件,即使Web服务器通过响应头允许它也是如此 103875需要测试是否因证书错误而禁用了缓存