如何停用 tomcat 快取?我遇到奇怪的靜態文件問題

如何停用 tomcat 快取?我遇到奇怪的靜態文件問題

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

相關內容