如何禁用tomcat缓存?我有奇怪的静态文件问题


26

如何防止tomcat缓存?我有通过ajax加载和使用的css和基本html文件,除非重新启动tomcat,否则更改似乎无法反映出来。不同的机器,不同的浏览器,并且我没有收到更新的文件。

有什么想法吗?

Answers:


21

更改cachingAllowed标志后,您可能必须删除/ work / Catalina / localhost中的应用程序缓存文件夹。

可以在server.xml中将配置引入为

<Context className="org.apache.catalina.core.StandardContext"
                 cachingAllowed="false"
                 charsetMapperClass="org.apache.catalina.util.CharsetMapper"
                 cookies="true" 
                 reloadable="false" 
                 wrapperClass="org.apache.catalina.core.StandardWrapper">
        </Context>

2
+1我完全忘了在原始答案中提及这一点。谢谢!
KPWINC

2
大声笑...爱在哪里?
KPWINC

4
我在哪里更改chachingAllowed标签?
kajacx

1
启动时收到Tomcat 8的警告:将属性设置cachingAllowedfalse找不到匹配的属性。
naXa

4
对于任何人来说,这个答案现在都是过时的,并且不再是正确的(对于Tomcat 5+)
Amalgovinus 16'Aug23

14

对于Tomcat 8 / Tomcat 9,应在conf / context.xml中添加属性,如下所示

<Context>
  <Resources antiResourceLocking="false" cachingAllowed="false" />
  ...
</Context>

更改cachingAllowed标志后,您可能必须删除/ work / Catalina / localhost中的应用程序缓存文件夹。还要清除IntelliJ IDEA的缓存(如果使用它运行Tomcat):

Mac:/ Users / {:user} / Library / Caches / IntelliJIdea {:version} / tomcat /  
Linux:/ home / {:user} /。IntelliJIdea {:version} / system / tomcat /
Windows:C:\ Users \ {:user} \。IntelliJIdea {:version} \ system \ tomcat \

有关其他参数,请参见《Apache Tomcat 9配置参考》。


2
对于tomcat 8,在<Resources> -Tag上的antiResourceLocking绝对是错误的
pscheit '16

这对于tomcat 7也不正确。“将属性'antiResourceLocking'设置为'false'找不到匹配的属性。” ...“将属性'cachingAllowed'设置为'false'找不到匹配的属性。”
Amalgovinus

Tomcat 7的@Amalgovinus参见Zalumon的答案
naXa

@Amalgovinus您解决了您的问题吗?我在tomcat7中遇到了同样的问题,您做了什么?
亚伦

我从没能使用该属性。.但是我很确定我的缓存是一个不相关的部署问题:(用户错误
Amalgovinus

13

我在Tomcat 7中遇到了这个问题,原因是我将antiResourceLocking设置为true(听起来是个好主意...)。

根据文档(http://tomcat.apache.org/tomcat-7.0-doc/config/context.html):

请注意,将此设置为true有一些副作用,包括在运行的服务器中禁用JSP重载:请参见Bugzilla 37668。

就我而言,它甚至导致纯静态文本文件被缓存。

因此,总而言之,至少为了快速发展,我不得不使用:

antiResourceLocking="false"
cachingAllowed="false"

我到底要在哪里添加?如果我输入conf / context.xml,它会给我它们“找不到匹配的属性” ...
Aaron

1
作为上下文元素的属性。
RetoHöhener17年

4

您是否检查过以下文档:Apache Tomcat配置参考

cacheMaxSize-静态资源缓存的最大大小(以千字节为单位)。如果未指定,则默认值为10240(10兆字节)。

cacheTTL-重新验证缓存条目之间的时间(以毫秒为单位)。如果未指定,则默认值为5000(5秒)。

cachingAllowed-如果此标志的值为true,则将使用静态资源的缓存。如果未指定,则标志的默认值为true。

这些参数对于Tomcat 5.5和Tomcat 6.0相同。


我在appcontext.xml中将cachingAllowed设置为false并将cacheTTL设置为1000,但我仍然无法获取不缓存的文件。更糟糕的是,它在Tomcat重新启动之间进行缓存。
Stefan Kendall,2009年

然后必须来自浏览器缓存
lisak 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.