2010-01-28 8 views
5

현재 작업중인 메신저에 문제가 있습니다.Tomcat 캐싱을 완전히 비활성화하려면 어떻게합니까?

페이스 북이 댓글 위젯에 연결되도록하려고합니다. 위젯은 200 OK 상태로 응답하는 새 요청을 할 때마다로드됩니다. 그러나 304 Not Modified로 반환하면 위젯이로드되지 않습니다.

모두 캐싱 문제를 지적합니다. 나는 contextin.xml을 변경하려고 시도했다.

<Context cachingAllowed="false"> 

이것은 제대로 작동하지 않았다. 어떤 팁?

답변

0

문제는 클라이언트 브라우저에서 캐싱 중이므로 요청에 임의의 숫자를 추가하십시오. like __rnd__= Math.random()

15

이것은 작동하지 않는 것 같습니다. 어떤 팁?

cachingAllowed 속성 실제로는 서버 측 캐싱이 아니라 당신이 기대하는 것 같은 클라이언트 측 캐싱을 구성합니다.

클라이언트 쪽 캐싱은 적절한 응답 헤더를 사용하여 수행해야합니다. 특정 자원에 대한 완전히 비활성화 클라이언트 측 캐싱에, 당신은 원하는 url-pattern에서 수신하고있는 Filter를 만들 필요가 적어도 doFilter() 방법 내부의 다음 줄 :

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. 
response.setHeader("Pragma", "no-cache"); // HTTP 1.0. 
response.setDateHeader("Expires", 0); // Proxies. 

response는 그런데 여기에있다 HttpServletResponsedoFilter() 메서드의 두 번째 ServletResponse 인수에서 다시 캐스팅되었습니다.

이 모든 것을 테스트하기 전에 클라이언트 측 캐시를 지우는 것을 잊지 마십시오. (웹 브라우저 구성 내에서) :

관련 문제