2012-02-07 1 views
5

웹 기반 응용 프로그램을 사용자 정의 웹 서버에 작성하고 이미지, 스타일 시트 및 JavaScript를 캐싱하지 않는 웹킷 브라우저에 문제가 있습니다.max-age 및 Last-Modified 헤더가 모두 제공 될 때 캐싱하지 않는 웹킷

Cache-Control : max-age와 Last-Modified 사이의 관계를 추적했습니다. 둘 다 지정되면 Webkit은 max-age 헤더를 무시하고 리소스가 사용될 때마다 파일이 수정되었는지 확인합니다. 사이트에는 첫 번째 페이지에 iframe이 있으며 스타일 시트 등이 초 이내에 두 번 요청됩니다.

Last-Modified를 제거하면 파일은 다음 날까지 다시 요청되지 않습니다. 그러나 서버가 304 헤더 대신 모든 것을 다시 보내야하는 요청 일 경우 다음 날 요청은 더 이상 수정되지 않을 것입니다.

IE9에서 Firefox 10.0 및 Opera 11.61은 브라우저가 올바르게 캐시되고 이미지를 다시 요청하지 않고 Cache-Control : no-cache 헤더 속성이있는 HTML 만 다시 요청합니다.

Chrome 16.0.912.77 m 및 Safari 5.1.2 (7534.52.7)에서는 매번 모든 페이지의 모든 이미지에 대해 조건부 요청이 이루어집니다. 서버는 최대 헤더 속성을 포함하는 304 헤더로 응답하지만 둘 다 요청을 계속합니다.

내가 응답으로 보낸다 예 HTTP 헤더는 다음과 같습니다

HTTP/1.1 200 OK 
Date: Mon, 06 Feb 2012 15:12:12 GMT 
Cache-Control: max-age=86400 
Content-length: 708 
Content-type: image/gif 
Last-Modified: Fri, 6 Jan 2012 14:39:07 GMT 
Server: Webspring 
내 캐시 헤더를 존중

사람이 내가 모든이 브라우저를 얻을 수있는 방법의 제안이 있습니까?

모든 브라우저는 Win7 Pro x64에서 실행되며 위의 HTTP 헤더는 Fiddler의 원시 출력이므로 브라우저에서 정확히 수신합니다.

참고 : 이전 질문은 헤더 필드 간의 상호 작용임을 알기 전에 질문했습니다. 이전 질문을 더 이상 정확하지 않게 삭제했습니다.

감사

모그

+0

혹시 원인을 진단했거나이 문제에 대한 해결책을 찾았습니까? 웹킷 기반 (Chrome/Safari) 브라우저에서는 Mac OS X 10.8.2의 모든 이미지에 조건부 GET 요청이 반복적으로 표시되지만 Firefox 캐시는 올바르게 캐시됩니다. –

+0

Chrome과 Safari의 마지막 수정 된 속성을 실제로 제거하여 적어도 캐싱을 수행합니다. 더 좋은 해결책을 찾지 못했습니다. – Mog0

답변

0
저도 같은 문제가되었다

하지만 넓은 웹킷되지 않았다; 시크릿의 Safari 및 Chrome은 정상적으로 작동합니다. 아무런 차이가 없지만 전체 캐시를 지우는 모든 확장 기능을 사용하지 못하게하려고 시도했습니다.

제 생각 엔 캐시 제어 헤더를 처음으로 사이트에 추가하면 Chrome이 캐시의 이전 헤더를 올바르게 덮어 쓰지 않습니다. 기존 캐시를 새 캐시 설정으로 올바르게 가져 오는 데는 몇 가지 문제가 있습니다.