응답 헤더에서 캐시 동작을 지정하는 데 상당히 표준적인 방법은 Date
값과 Expires
값을 모두 설정하는 것입니다. (어떤 종류의 캐시 제어 지시문 (예 : cache-control=public
)과 함께). 그런 다음Date 및 Expires 값이 모두 과거 일 때 예상되는 캐시 동작은 무엇입니까?
Tue, 24 Jun 2014 13:36:05 GMT
1 시간 캐시 값은 다음 헤더를 포함 할 수 있습니다 설정하는 표준 응답 : 요청이 지금 시간 에서 수행된다고 가정
, 지금 인,의 말을하자 :
Date: Tue, 24 Jun 2014 13:36:05 GMT
Expires: Tue, 24 Jun 2014 14:36:05 GMT
이것은 에서으로 1 시간 동안 자원을 캐시하도록 모든 중간 캐시 또는 PoP에 알려야합니다.
그러나, Expires
값 및Date
값 모두 과거에 무엇합니다. (잘못된 서버 시계 때문에 아마도)
우리가 다른 요청을 고려하는 경우
는 지금 존재로, 같은 시간에 만들어지는 :Date: Tue, 24 Jun 2014 11:10:00 GMT
Expires: Tue, 24 Jun 2014 11:44:00 GMT
: 해당 응답은 다음의 헤더 값을 포함하면 어떻게
Tue, 24 Jun 2014 13:36:05 GMT
여기서 두 값은 이미 있습니다. 과거. 과거의 Expires
값은 일반적으로 no-cache
을 트리거하기에 충분하지만 과거에는 Date
값의 영향은 무엇입니까?
해야 캐시 구현은 이제 + 오프셋 의 만기 가치를 창출하는 것을 사용 후는 Expires
오프셋 계산하고 Date
의 값을 사용할 수 있습니까?
RFC2616 날짜 섹션은 지난
RFC2616에서 날짜 값을 언급하지 않습니다
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.18
섹션
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21
가 Date === Expires
경우 reponse가 이라고 규정 만료 '이미 만료'.
어느 쪽도 Date
과 Expires
이 이미 지나간 경우를 언급하지 않습니다.
UPDATE/RFC2616는
추가 읽기 RFC2616 is dead와는보다 구체적인 RFC를 세트로 대체되었습니다 제안 죽은 것입니다.
새로운 RFC7234 - HTTP/1.1: Caching는 다음과 같은 성명이 포함 된 Calculating Freshness Lifetime 포함 : (가) 응답 헤더 필드는, 그 값을 뺀 날짜 응답 헤더 필드의 값을 사용하는 존재 만료되면
을
위의 내용을 정확히 설명하는 것 같습니다. 만료 값을 사용하십시오 :
expiry=(Expires - Date) + Now
원본 RFC에는 이와 동등한 구문이없는 것 같습니다. 여전히 RFC2616을 따르는 사람들에게는 개별 브라우저/캐시 공급 업체에 따라 문제가 있습니까?