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/{:user}/.IntelliJIdea{:version}/system/tomcat/
Windows: C:\Users\{:user}\.IntelliJIdea{:version}\system\tomcat\

見るApache Tomcat 9 設定リファレンスその他のパラメータについては。

答え3

Tomcat 7 でこの問題が発生しましたが、その原因は antiResourceLocking を true に設定していたことでした (良いアイデアのように思えましたが...)。

ドキュメントによると(コンテキスト):

これを 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 で同じです。

関連情報