2011-09-27 4 views
13

Cache-Control:no-storeCache-Control:no-cache 사이의 실제적인 차이점을 찾지 못했습니다.캐시 제어에서 no-cache와 no-store의 차이점은 무엇입니까?

내가 아는 한 no-store은 캐시 장치가 해당 응답을 캐시 할 수 없음을 의미합니다. 반면에 no-cache은 캐시 장치가 원본과 유효성을 검사하지 않고 캐시 된 응답을 제공 할 수 없음을 의미합니다. 그러나 그 검증은 무엇에 관한 것입니까? 조건부 취득?

응답에 no-cache이 있지만 Last-Modified 또는 ETag이없는 경우 어떻게됩니까?

감사합니다.

답변

12

하지만 그 수표는 무엇입니까?

정확하게 Last-Modified 또는 ETag을 확인하십시오. 클라이언트는 서버에 해당 헤더를 사용하는 새로운 버전의 데이터가 있는지 묻고 대답이 아니면 캐시 된 데이터를 제공합니다.


업데이트

RFC

no-cache 
    If the no-cache directive does not specify a field-name, then a cache MUST NOT use 
the response to satisfy a subsequent request without successful revalidation with the 
origin server. This allows an origin server to prevent caching even by caches that 
have been configured to return stale responses to client requests. 
+0

캐시 된 응답에 'Last-Modified'또는 'ETag'가없는 경우? – vtortola

+0

이 경우 응답은 전혀 캐시되지 않을 것이라고 생각합니다. –

+0

그것이 RFC를 해석하는 방법입니다. (추가 스 니펫) –

2

, 아니 -cache는 캐싱이 없다는 것을 의미하는 것이 아니라 캐시 된 것을 사용하는 것이 사용자 에이전트가 항상 서버에 요청해야한다는 것을 의미합니다. 대조적으로, 어떤 상점도 복사본을 보관하지 않는다고 말합니다. 즉, 물어볼 게 없습니다. "이걸 다시 사용할 수 있을까요?"라는 대답을 알고 있다면 항상 아니오입니다. (1) 묻는 오버 헤드를 건너 뛰고 (2) 재사용 할 수없는 새로운 결과를위한 공간을 만들기 위해 재사용 가능한 일부 저장 결과를 폐기하지 않음으로써 성능이 향상됩니다.

성능 외에도 브라우저 기록과 동작 차이가 있습니다. HTTP 1.1 사양 섹션 13.13은 "만료 시간은 기록 메커니즘에 적용되지 않습니다."라고 말합니다. no-cache 헤더는 만료를 설명하므로 뒤로 버튼과 같은 기록 메커니즘에는 적용되지 않습니다. 따라서 사용자는 서버에 접속하지 않고도 no-cache로 이전 페이지로 되돌아 갈 수 있습니다.

반면에 비 저장 헤더는 데이터가 세션 외부에 저장되는 것을 방지합니다.이 경우 단순히 기록 메커니즘에서 사용할 수 없습니다. 상점이 없으면 사용자가 다른 도메인으로 이동하여 세션을 끝내고 다시 돌아 오는 경우 브라우저가 표시 할 내용을 알 수있는 유일한 방법은 서버에서 초기 페이지를 다시 얻는 것입니다.

노 캐시 "이 캐시하지 않음"을 의미하지 않습니다 (즉, 어떤 매장하지 않을 것이다) :

다음은이 주제에 Chromium issue이 차이를 만드는 방법입니다. no-cache는 리소스가 신선함을 위해 재확인되지 않는 한 일반로드에 대해 이것을 사용하지 않는다는 것을 의미합니다. 히스토리 탐색은 일반적인로드가 아닙니다.

관련 문제