¿Cómo desactivo el almacenamiento en caché de Tomcat? Tengo problemas extraños con archivos estáticos.

¿Cómo desactivo el almacenamiento en caché de Tomcat? Tengo problemas extraños con archivos estáticos.

¿Cómo evito que Tomcat almacene en caché? Tengo archivos css y html básicos que cargo y uso a través de ajax y, a menos que reinicie Tomcat, los cambios no parecen reflejarse. Diferentes máquinas, diferentes navegadores y no recibo los archivos actualizados.

¿Pensamientos?

Respuesta1

Es posible que deba eliminar la carpeta de caché de la aplicación /work/Catalina/localhostdespués de cambiar la cachingAllowedbandera.

La configuración se puede introducir 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>

Respuesta2

Para Tomcat 8/Tomcat 9, las propiedades deben agregarse en conf/context.xml de la siguiente manera

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

Es posible que tengas que eliminar la carpeta de caché de la aplicación en /work/Catalina/localhost después de cambiar la cachingAllowedbandera. También borre el caché de IntelliJ IDEA (si lo usa para ejecutar Tomcat):

Mac: /Usuarios/{:usuario}/Biblioteca/Caches/IntelliJIdea{:versión}/tomcat/  
Linux: /home/{:usuario}/.IntelliJIdea{:versión}/system/tomcat/
Windows: C:\Users\{:usuario}\.IntelliJIdea{:versión}\system\tomcat\

VerReferencia de configuración de Apache Tomcat 9para otros parámetros.

Respuesta3

Tuve este problema en Tomcat 7 y la razón fue que tenía antiResourceLocking configurado en verdadero (parecía una buena idea...).

Según los documentos (http://tomcat.apache.org/tomcat-7.0-doc/config/context.html):

Tenga en cuenta que establecer esto en verdadero tiene algunos efectos secundarios, incluida la desactivación de la recarga de JSP en un servidor en ejecución: consulte Bugzilla 37668.

En mi caso, incluso provocó que se almacenaran en caché archivos de texto estático sin formato.

Entonces, en resumen, al menos para un desarrollo rápido tuve que usar:

antiResourceLocking="false"
cachingAllowed="false"

Respuesta4

¿Has revisado esta documentación?Referencia de configuración de Apache Tomcat?

cacheMaxSize-- Tamaño máximo de la caché de recursos estáticos en kilobytes. Si no se especifica, el valor predeterminado es 10240 (10 megabytes).

cacheTTL-- Cantidad de tiempo en milisegundos entre la revalidación de las entradas de la caché. Si no se especifica, el valor predeterminado es 5000 (5 segundos).

cachingAllowed-- Si el valor de este indicador es verdadero, se utilizará la caché para recursos estáticos. Si no se especifica, el valor predeterminado de la bandera es verdadero.

Estos parámetros son los mismos para Tomcat 5.5 y Tomcat 6.0.

información relacionada