Jetty有一个CacheControl parameter(可以指定为webdefault.xml),它决定了客户端的缓存行为(通过影响发送到客户端的头)。
Tomcat有类似的选项吗?简而言之,我想关闭对tomcat服务器和/或特定webapp提供的所有页面的缓存?
更新
请注意,我指的不是服务器端缓存。我希望服务器告诉所有客户端(浏览器)不要使用自己的缓存,并始终从服务器获取内容。我想一次对所有的资源做这个,包括静态资源(.css、.js等)。
Jetty有一个CacheControl parameter(可以指定为webdefault.xml),它决定了客户端的缓存行为(通过影响发送到客户端的头)。
Tomcat有类似的选项吗?简而言之,我想关闭对tomcat服务器和/或特定webapp提供的所有页面的缓存?
更新
请注意,我指的不是服务器端缓存。我希望服务器告诉所有客户端(浏览器)不要使用自己的缓存,并始终从服务器获取内容。我想一次对所有的资源做这个,包括静态资源(.css、.js等)。
7条答案
按热度按时间1rhkuytd1#
自Tomcat 7以来,提供了一个容器过期过滤器,可能会有所帮助。参见:
ExpiresFilter是Apache mod_expires的Java Servlet API端口。此过滤器控制服务器响应中
Expires
HTTP标头和Cache-Control
HTTP标头的max-age
指令的设置。过期日期可以设置为与上次修改源文件的时间或客户端访问的时间相关。qcuzuvrc2#
类似于上面的文章,除了代码有一些问题。这将禁用所有浏览器缓存:
然后在web.xml中进行Map,如Stu Thompson's answer中所述。
lb3vh1jj3#
我不相信有配置可以做到这一点。但是,编写一个过滤器来设置每个webapp的Cache-Control头不应该花费太多精力。例如:
然后将此代码段放入webapp的
web.xml
文件中。l7mqbcuq4#
实际上,Tomcat配置中有几个元素直接影响这一点。例如,请参阅http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html上的文档。
Atlassian建议使用以下两个语句来启用浏览器端缓存,以便Microsoft Internet Explorer能够正确下载和查看附加文档:
ehxuflar5#
这可能是你正在寻找的:
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html#Context%20Parameters
在更改此标志后,还要删除/work/ Catalina /localhost中的应用程序缓存文件夹。
6yoyoihd6#
我知道的唯一参数是
<Valve>
元素上的disableProxyCaching
。参见here。laik7k3q7#
我研究的几乎所有答案都来自服务器端,实际上客户端也需要工作。在jsp/html中需要在header下面添加。