문제

처음에는 캐싱이 모든 브라우저에서 작동하지 않았습니다. 그런 다음 모든 브라우저에서 URL에 .pdf 확장을 추가하여 모든 브라우저에서 작동하게했습니다. 그 후 서블릿이 전화를 멈추지 않았습니다.

다음 URL을로드하는 Embed Tag를 통해 웹 페이지에 PDF 파일을 인라인으로 표시합니다.

http://localhost:7001/app/viewFile.pdf

다음 헤더가있는 Java Servlet에 의해 생성됩니다.

response.addHeader("Content-Disposition", "inline;");
response.setHeader("Cache-control", "cache,max-age=600");
response.setContentType(mimeType);
response.setContentLength(contentLength);

모든 브라우저에 PDF 표시의 경우 Adobe Reader 9.2.0을 사용합니다.

IE에서도 작동하는 방법? IE가 '캐시 제어 : No-Cache'헤더를 추가하는 것을 알았습니다. 요구, 예를 들어 사파리는 그렇지 않습니다.

도움이 되었습니까?

해결책

앞에서 말했듯이 cache-control 헤더 값 cache 유효하지 않다. 사용 public 대신에.

즉, 서버 측 캐시 제어 규칙을 embed 그리고 object 요소, 이것은 불행히도 IE의 "기능"입니다. 당신이 할 수있는 일은 iframe 요소.

다른 헤더가 좋아합니다 expires, last-modified, etag 그리고 도움이되지 않을 것입니다.

다른 팁

조사 할 몇 가지 아이디어 :

  1. 나는 생각하지 않는다 cache 유효합니다 Cache-Control 지령.

    값을 사용해보십시오 public 대신, 또는 private 그것이 당신의 콘텐츠에 더 적합한 경우. 체크 아웃 RFC 2616 자세한 내용은.

  2. 아마도 당신은 둘 이상을 보내고있을 것입니다Cache-Control 지령?

    같은 도구를 사용하십시오 개똥 벌레 또는LivehttPheaders 실제 헤더를 들여다 보려면 브라우저가 수신합니다. 그들이 기대하지 않는 것을 얻지 못하는지 확인하십시오. 그래도 이미이 작업을 수행하고있는 것 같습니다. 또한 보내지 않는지 확인하십시오 Pragma: no-cache.

  3. 설정해보십시오Expires 사용하는 것 외에도 헤더Cache-Control.

    브라우저 충돌을 보내는 것도 가능합니다 Cache-Control/Pragma헤더와 IE는Pragma 뒤로 물러나는 이유에 대한 첫 번째 우선 순위.

  4. IE가 캐싱을 허용하도록 구성되어 있는지 확인하십시오! :)

    Control Panel > Internet Options > Temporary Internet Files > Settings > Check for newer versions of stored pages

  5. PDF를 a에 대한 응답으로 보내십시오 POST 요청 (양식 제출을 통해).

    즉,이 요구 사항으로 인해 응답의 헤더에 관계없이 캐시가 발생할 수 있습니다. RFC 2616: "기본적으로 요청 메소드의 요구 사항이 있으면 응답이 캐시 가능합니다. 그리고 응답 상태는 캐시 가능하다는 것을 나타냅니다. "응답 POST 요청은 캐시 할 수 없으므로 IE는 해당 헤더를 요청하지 않아야합니다.

  6. 보내십시오 Content-MD5 그리고 Last-Modified 일관된 값을 가진 헤더 (아직 전송되지 않은 경우).

    이것은 PDF의 내용이 변경되지 않았 음을 IE에게 확신시키는 데 도움이 될 수 있습니다. IE는 분명히 완고하기 때문에이 솔루션이 효과가 있다고 생각하지 않지만 언급 할 가치가 있습니다.

문제에 대한 명백한 방법 중 하나는 URL 재 작성을 사용하는 것입니다. IE가 Extension에서 .pdf와 함께 작동하는 경우, Mod_rewrite (APACHE) 또는 오른쪽 페이지로 서버 측 리디렉션과 유사한 도구를 사용하면서 클라이언트가 실제로 PDF 파일을 요청하고 있다고 생각합니다.

또한 : Fiddler와 같은 도구를 사용하여 클라이언트가받는 HTTP 헤더를 검토하십시오.

또한 :이 오래된 질문을 검토합니다 (PHP : Force File Download 및 IE, 그러나 다시), IE 와도 비슷한 문제가있었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top