2014-06-24 7 views
1

응답 헤더에서 캐시 동작을 지정하는 데 상당히 표준적인 방법은 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에 알려야합니다.

그러나, ExpiresDate 값 모두 과거에 무엇합니다. (잘못된 서버 시계 때문에 아마도)

우리가 다른 요청을 고려하는 경우

지금 존재로, 같은 시간에 만들어지는 :

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가 이라고 규정 만료 '이미 만료'.

어느 쪽도 DateExpires이 이미 지나간 경우를 언급하지 않습니다.

UPDATE/RFC2616는
추가 읽기 RFC2616 is dead와는보다 구체적인 RFC를 세트로 대체되었습니다 제안 죽은 것입니다.

새로운 RFC7234 - HTTP/1.1: Caching는 다음과 같은 성명이 포함 된 Calculating Freshness Lifetime 포함 : (가) 응답 헤더 필드는, 그 값을 뺀 날짜 응답 헤더 필드의 값을 사용하는 존재 만료되면

위의 내용을 정확히 설명하는 것 같습니다. 만료 값을 사용하십시오 :

expiry=(Expires - Date) + Now

원본 RFC에는 이와 동등한 구문이없는 것 같습니다. 여전히 RFC2616을 따르는 사람들에게는 개별 브라우저/캐시 공급 업체에 따라 문제가 있습니까?

답변

1

2616에서 해당 섹션은 13.2.3 연령 계산입니다.