在所有请求的响应头中,有一个cache-control:private,以及设置的Expires。我想知道这是设置的位置。
我有以下设置: 1. F5负载平衡到托管Tomcat 7.0.42.0的两台CentOS 6.4服务器 2.我为图像,css和js文件设置了ExpiresFilter。但是,这些类型并不总是缓存。
有两种环境,但只有一种环境显示响应标头Cache-Control private,以及Expires Wed,1969年12月31日19:00:00 EST。另一个环境没有表明这一点。
我已经完成了Tomcat的server.xml,web.xml和context.xml的差异,并没有太大的区别。
谷歌搜索导致一些与SSL配置相关的帖子,但我无法确定究竟是什么问题。
具有缓存控制的响应标头,并在过去过期:
Cache-Control private
Content-Length 0
Date Fri, 06 Mar 2015 16:08:16 GMT
Expires Wed, 31 Dec 1969 19:00:00 EST
Location https://myhost.com/mypage
Response HTTP/1.1 302 Found
Server Apache-Coyote/1.1
答案 0 :(得分:2)
我有完全相同的问题。我的tomcat安装在conf文件夹中有自定义[web.xml]和[conf.xml]文件,以提供HTTPS连接。就我而言,问题在于[conf.xml]文件中的HTTPS安全性约束:
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Context</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
此约束强制客户端始终使用HTTPS,即使打开了端口80也是如此。从web.xml中删除此约束后,缓存开始工作(“cache-control”标头带有“max-age”,“expires”带有正确的日期)。
答案 1 :(得分:0)
找到解决问题的方法,但不是确切原因。
我在同一主机上安装了一个新的tomcat实例,但在另一个目录中,这解决了标题'Expires Wed,1969年12月31日19:00:00 EST'和'Cache-Control private'。还复制了来自同一主机的先前Tomcat安装的tomcat-users.xml,server.xml和web.xml。
我怀疑在导致问题的原始安装上删除Apache Web Server之后的某处有一些剩余配置。