如何防止tomcat快取?我有透過 ajax 加載和使用的 css 和基本 html 文件,除非重新啟動 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 是相同的。