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

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

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

有什么想法吗?

答案1

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

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

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

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

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

Mac:/Users/{:user}/Library/Caches/IntelliJIdea{:version}/tomcat/  
Linux:/home/{:用户}/.IntelliJIdea{:版本}/system/tomcat/
Windows:C:\Users\{:用户}\.IntelliJIdea{:版本}\system\tomcat\

Apache Tomcat 9 配置参考其他参数。

答案3

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

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

请注意,将其设置为 true 会产生一些副作用,包括在正在运行的服务器中禁用 JSP 重新加载:参见 Bugzilla 37668。

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

因此,总而言之,至少对于快速开发我必须使用:

antiResourceLocking="false"
cachingAllowed="false"

答案4

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

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

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

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

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

相关内容