页面未在浏览器中缓存

Pages not getting cached in browser

我正在使用 apache tomcat 服务器,并且有一个 Web 应用程序呈现多个 js、css 和图像文件。我想确保这些文件被浏览器缓存,这样它们就不会每次都被请求。但是,我注意到有些文件正在被缓存,而另一些则没有。我发现应用程序的响应 header 已过期:"Dec 31 1969 at 7:00 PM"。在完成 this 之后,我从 web.xml 中删除了 tomcat security-constraint,这成功地删除了 header。我还在我的应用程序中将 Expires header 配置为从现在起 1 周。这也不能确保页面被缓存。

然后我将 Cache-Control header 配置为 public,max-age 设置为 1 周。 None 这些更改对我有帮助。此外,缓存和未缓存的页面具有相同的 headers,如下所示:

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,但没有任何运气。

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

但是,当应用部署在 Linux 环境中 Tomcat 且 SSL 不缓存文件时。是 SSL 造成的吗?

您需要消除 SSL 证书错误。 Chrome 不会缓存有此类错误的资源。

有关更多信息,请查看下面的 Chromium 问题: