2012-09-08 5 views
2

내 질문에 짧게 (그리고 잘하면 해결할 수 있습니다!) :으로 실현 된 웹 서비스에서 브라우저 캐싱을 완전히 비활성화하려면 어떻게합니까?Vaadin에서 브라우저 캐싱을 비활성화하는 방법

일부 PDF 스트리밍을 수행하고 내 브라우저에 표시하려고 할 때 문제가 발생하므로 캐싱을 완전히 비활성화하고 싶습니다.

여기 예를 들어, 내 문제에 대한 해결책에 대해 읽고 :

Using <meta> tags to turn off caching in all browsers?

그들은 브라우저 캐싱을 사용하지 않도록 웹 응용 프로그램에 몇 가지 헤더를 추가하는 방법에 대한 이야기. 하지만 어떻게 그들을 내 Vaadin 응용 프로그램에 추가 할 수 있습니까?

짧은 코드는 모든 대답을 다시 한 번 (! 도움)

감사를 매우 환영하고 당신이 나와 함께 공유하고 생각합니다.

답변

3

PDF 파일을 다운로드 할 때 캐싱을 사용하지 않도록 설정하려고합니다. DownloadStream을 사용하여 콘텐츠를 스트리밍 한 경우 다음과 같이 Content-DispositionCache-Control 헤더를 설정하면됩니다.

DownloadStream stream = new DownloadStream(getStreamSource().getStream(), contentType, filename); 
stream.setParameter("Content-Disposition", "attachment;filename=" + filename); 
// This magic incantation should prevent anyone from caching the data 
stream.setParameter("Cache-Control", "private,no-cache,no-store");  
// In theory <=0 disables caching. In practice Chrome, Safari (and, apparently, IE) all ignore <=0. Set to 1s 
stream.setCacheTime(1000); 

당신이 모든 angel이라는 요청을 캐싱을 사용하지 않으려면, 당신은 AbstractApplicationServlet의 소스를 보면, 및 #serveStaticResourcesInVAADIN 등의 방법 등을 확장해야합니다 -이 그들 많이로, 까다로운 빠른 개인적인 방법입니다.

더 간단한 방법은 Http Servlet Filter를 사용하여 앱을 전혀 수정할 필요없이 응답에 적절한 매개 변수를 추가하는 것입니다. http://code.google.com/p/cache-filter/wiki/NoCacheFilter

나는 Cache-Filter를 사용하지 않았지만 빠른 스킴은 잘 작동 할 것이라고 제안합니다.

관련 문제