Como desativo o cache do Tomcat? Estou tendo problemas estranhos com arquivos estáticos

Como desativo o cache do Tomcat? Estou tendo problemas estranhos com arquivos estáticos

Como evito que o Tomcat armazene em cache? Tenho arquivos css e html básicos que carrego e uso via ajax e, a menos que eu reinicie o Tomcat, as alterações parecem não refletir. Máquinas diferentes, navegadores diferentes e não recebo os arquivos atualizados.

Pensamentos?

Responder1

Talvez seja necessário excluir a pasta de cache do aplicativo /work/Catalina/localhostapós alterar o cachingAllowedsinalizador.

A configuração pode ser introduzida server.xmlcomo

    <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>

Responder2

Para Tomcat 8/Tomcat 9, as propriedades devem ser adicionadas em conf/context.xml da seguinte forma

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

Talvez seja necessário excluir a pasta de cache do aplicativo em /work/Catalina/localhost após alterar o cachingAllowedsinalizador. Limpe também o cache do IntelliJ IDEA (se você usá-lo para executar o Tomcat):

Mac: /Users/{:user}/Library/Caches/IntelliJIdea{:version}/tomcat/  
Linux: /home/{:user}/.IntelliJIdea{:version}/system/tomcat/
Windows: C:\Users\{:user}\.IntelliJIdea{:version}\system\tomcat\

VerReferência de configuração do Apache Tomcat 9para outros parâmetros.

Responder3

Eu tive esse problema no Tomcat 7 e o motivo foi que eu tinha antiResourceLocking definido como verdadeiro (parecia uma boa ideia...).

De acordo com os documentos (http://tomcat.apache.org/tomcat-7.0-doc/config/context.html):

Observe que definir isso como verdadeiro tem alguns efeitos colaterais, incluindo a desativação do recarregamento de JSP em um servidor em execução: consulte Bugzilla 37668.

No meu caso, até mesmo arquivos de texto estático simples foram armazenados em cache.

Então, em resumo, pelo menos para um desenvolvimento rápido tive que usar:

antiResourceLocking="false"
cachingAllowed="false"

Responder4

Você verificou esta documentação:Referência de configuração do Apache Tomcat?

cacheMaxSize-- Tamanho máximo do cache de recurso estático em quilobytes. Se não for especificado, o valor padrão será 10240 (10 megabytes).

cacheTTL-- Quantidade de tempo em milissegundos entre a revalidação das entradas de cache. Se não for especificado, o valor padrão será 5000 (5 segundos).

cachingAllowed-- Se o valor deste sinalizador for verdadeiro, o cache para recursos estáticos será usado. Se não for especificado, o valor padrão do sinalizador será verdadeiro.

Esses parâmetros são iguais para Tomcat 5.5 e Tomcat 6.0.

informação relacionada