如何防止 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 是相同的。