it-swarm.cn

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

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

有什么想法吗?

26
Stefan Kendall

更改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>
21
Adam Brand

对于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配置参考

14
naXa

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

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

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

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

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

antiResourceLocking="false"
cachingAllowed="false"
13
Reto Höhener

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

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

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

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

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

4
KPWINC