Tomcatキャッシングを無効にするにはどうすればよいですか?奇妙な静的ファイルの問題があります


26

Tomcatのキャッシュを防ぐにはどうすればよいですか?私はajax経由で読み込んで使用するcssと基本的なhtmlファイルを持っています。tomcatを再起動しない限り、変更は反映されないようです。異なるマシン、異なるブラウザー、および更新されたファイルを受け取りません。

考え?

回答:


21

cacheAllowedフラグを変更した後、/ work / Catalina / localhostのアプリケーションキャッシュフォルダーを削除する必要がある場合があります。

構成は、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
+1私は元の答えでそれを言及するのを完全に忘れていました。ありがとう!
KPWINC 2009

2
笑...愛はどこにあるの?
KPWINC 2009

4
chachingAllowedタグはどこで変更しますか?
kajacx 14

1
開始時にTomcat 8から警告が表示されました:プロパティcachingAllowedを設定するとfalse、一致するプロパティが見つかりませんでした。
naXa

4
この回答は、読んでいる人にとっては非常に古いものであり、もはや正しくありません(Tomcat 5+の場合)
-Amalgovinus

14

Tomcat 8 / Tomcat 9のプロパティは、次のようにconf / context.xmlに追加する必要があります

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

cachingAllowedフラグを変更した後、/ work / Catalina / localhostのアプリケーションキャッシュフォルダーを削除する必要がある場合があります。また、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構成リファレンス参照してください。


2
<Resources>タグのantiResourceLockingは、tomcat 8
pscheit

これは、Tomcat 7でも正しくありません。「プロパティ 'antiResourceLocking'を 'false'に設定すると、一致するプロパティが見つかりませんでした。」...「プロパティ「cachingAllowed」を「false」に設定すると、一致するプロパティが見つかりませんでした。」
アマルゴビヌス

Tomcat 7の@AmalgovinusZalumonの回答を参照してください。
naXa

@Amalgovinusは問題を解決しましたか?tomcat7でも同じ問題がありますが、どうしましたか?
アーロン

私は仕事にプロパティをやったことがなかった..しかし、私はかなり確信して、私のキャッシュは無関係な展開の問題:(ユーザー・エラーだったよ
Amalgovinus

13

Tomcat 7でこの問題が発生しました。その理由は、antiResourceLockingをtrueに設定したためです(いい考えのように聞こえました...)。

ドキュメントによると(http://tomcat.apache.org/tomcat-7.0-doc/config/context.html):

これをtrueに設定すると、実行中のサーバーでのJSPリロードの無効化など、いくつかの副作用があることに注意してください。Bugzilla37668を参照してください。

私の場合、プレーンスタティックテキストファイルがキャッシュされることさえありました。

したがって、要約すると、少なくとも迅速な開発のために使用しなければなりませんでした:

antiResourceLocking="false"
cachingAllowed="false"

これをどこに正確に追加しますか?私はconfに/ context.xmlに入れた場合、それは...それらのそれぞれについて、「整合性を見つけることができませんでした」私を与える
アーロン

1
コンテキスト要素の属性として。
レトホーエナー

4

このドキュメントを確認しました:Apache Tomcat設定リファレンス

cacheMaxSize-静的リソースキャッシュの最大サイズ(キロバイト単位)。指定しない場合、デフォルト値は10240(10メガバイト)です。

cacheTTL-キャッシュエントリの再検証間のミリ秒単位の時間。指定しない場合、デフォルト値は5000(5秒)です。

cachingAllowed-このフラグの値がtrueの場合、静的リソースのキャッシュが使用されます。指定しない場合、フラグのデフォルト値はtrueです。

これらのパラメーターは、Tomcat 5.5とTomcat 6.0で同じです。


appcontext.xmlで、cachingAllowedをfalseに設定し、cacheTTLを1000に設定しましたが、まだキャッシュしないファイルを取得できません。さらに悪いことに、Tomcatの再起動でキャッシュが発生します。
ステファンケンドール

その後、ブラウザのキャッシュから
取得する
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.