【问题标题】:Pages not getting cached in browser页面未在浏览器中缓存
【发布时间】:2017-02-01 09:42:14
【问题描述】:

我正在使用 apache tomcat 服务器并有一个 Web 应用程序呈现几个 js、css 和图像文件。我想确保这些文件被浏览器缓存,这样就不会每次都请求它们。但是,我注意到有些文件正在被缓存,而另一些则没有。我发现应用程序的响应标头有 Expires :“Dec 31 1969 at 7:00 PM”。经过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 环境中时,我的应用程序成功缓存了浏览器中的所有文件。

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

【问题讨论】:

  • 您能否向我们展示一个未被浏览器缓存的资源请求的 HTTP 标头?
  • @LeonidVasilyev 我在上面编辑了我的帖子。 SSL 是否会导致此问题?
  • 请求头如下: GET /html/en/default/***.css HTTP/1.1 Host: 10.62.137.70 Connection: keep-alive User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36 Accept: text/css,/;q=0.1 Referrer: *** Accept-Encoding: gzip , 放气, sdch, br 接受语言: en-US,en;q=0.8 Cookie: _ga=GA1.1.794081272.1485321205; _gat=1; JSESSIONID=***
  • Chrome 是否显示有关您的 SSL 证书的任何错误?
  • 是的,“https”和挂锁在 chrome 中有一个十字,并显示“您与此站点的连接不安全”。

标签: tomcat browser-cache tomcat8 http-caching


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回答 :) 我在另一台具有有效 SSL 证书的服务器上测试了我的应用程序,它可以正常工作。
  • 我没有 SSL 证书错误,我的服务器证书很好,但没有缓存内容。
猜你喜欢
  • 2015-11-29
  • 2014-05-26
  • 1970-01-01
  • 2015-07-22
  • 2012-06-19
  • 2017-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多