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\{:사용자}\.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
-- 정적 리소스 캐시의 최대 크기(KB)입니다. 지정하지 않은 경우 기본값은 10240(10MB)입니다.
cacheTTL
-- 캐시 항목 재검증 사이의 시간(밀리초)입니다. 지정하지 않을 경우 기본값은 5000(5초)입니다.
cachingAllowed
-- 이 플래그의 값이 true이면 정적 리소스에 대한 캐시가 사용됩니다. 지정하지 않으면 플래그의 기본값은 true입니다.
이러한 매개변수는 Tomcat 5.5 및 Tomcat 6.0에서 동일합니다.