tomcat - 页面未在浏览器中缓存

标签 tomcat browser-cache tomcat8 http-caching

我正在使用 apache tomcat 服务器,并且有一个 Web 应用程序渲染多个 js、css 和图像文件。我想确保浏览器缓存这些文件,这样就不会每次都请求它们。但是,我注意到有些文件被缓存,而另一些则没有。我发现应用程序的响应 header 已过期:“1969 年 12 月 31 日晚上 7:00”。经过this后我从 web.xml 中删除了 tomcat 安全约束,成功删除了 header 。我还在应用程序中将 Expires header 配置为从现在起 1 周。这也不能确保页面被缓存。

接下来,我将 Cache-Control header 配置为公开,并将 max-age 设置为 1 周。这些改变都对我没有帮助。此外,被缓存和未被缓存的页面具有相同的 header ,如下所示:

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 

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

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

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

最佳答案

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

有关详细信息,请查看下面的 Chromium 问题:

关于tomcat - 页面未在浏览器中缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41976435/

相关文章:

java - 带有 tomcat 服务器的自签名证书的 TLS - 无法加载 PEM 客户端证书

JavaFX WebView/WebEngine 缓存外部 JavaScript

javascript - 从 Bookmarklet 中使用 JavaScript 或 PHP 检测 Url 的引用

javascript - 在 iOS 上的 Safari 中刷新图像

java - 当我的 REST API 返回 500 HTTP 状态时如何禁用 Tomcat 的 html 错误页面

ubuntu - Tomcat 管理器在 ubuntu droplet 上显示 403

java - 在 tomcat v 8.5 上部署 spring boot 应用程序失败

tomcat - Nginx 和 Tomcat - 子域指向子目录

java - 生产和测试环境中 Tomcat Web 应用程序的属性

java - 防止tomcat在每次java更新时崩溃