if-modified-since와 if-none-match의 차이점은 무엇입니까? 파일에는 if-none-match가 사용되는 반면 페이지에는 if-modified-since가 사용된다는 느낌이 있습니까?
답변:
차이점에 대해서 Last-Modified/If-Modified-Since
와 ETag/If-None-Match
:
둘 다 서로 바꿔서 사용할 수 있습니다. 그러나 리소스의 유형과 서버에서 생성되는 방법에 따라 하나 또는 다른 질문 ( "... 이후 수정 되었습니까?"/ "이 ETag와 여전히 일치합니까?")이 더 쉽게 대답 할 수 있습니다. .
예 :
mtime
로 사용하는 Last-Modified
것이 가장 간단한 해결책입니다.ETag
것이 훨씬 쉬울 것입니다. 주제에 대한 자세한 내용은 다음 링크를 참조하십시오.
If-Modified-Since
와 비교되는 Last-Modified
반면 If-None-Match
에 비교됩니다 ETag
. Modified-Since
및 둘 다 ETag
리소스의 특정 변형을 식별하는 데 사용할 수 있습니다.
그러나 If-Modified-Since
to를 비교 Last-Modified
하면 캐시 된 변형이 이전 또는 최신 인지 여부에 대한 정보 를 제공 하는 반면 If-None-Match
to 비교는 ETag
둘 다 동일한 지 여부에 대한 정보를 제공합니다 . 또한 대부분의ETag
생성기는 시스템 특정 inode 의 정보를 포함 하므로 파일을 다른 드라이브로 이동하면 변경 될 수도 있습니다 ETag
.
Google의 모범 사례에 명시된 바와 같이 :
캐시 가능한 모든 리소스에 대해 Expires 또는 Cache-Control max-age 중 하나와 Last-Modified 또는 ETag 중 하나를 지정하는 것이 중요합니다. Expires 및 Cache-Control : max-age를 모두 지정하거나 Last-Modified 및 ETag를 모두 지정하는 것은 중복됩니다.
https://developers.google.com/speed/docs/best-practices/caching
Last-Modified
with ETag
(또는 useragent 측에서는 If-Modified-Since
with If-None-Match
) 사용에 대한 제한 이 언급 되지 않았습니다 . 마찬가지로 W3 사양은 당신을 제한하지 않습니다. If-Modified-Since
와 함께 사용하지 말라고 If-Match
했지만 날짜가 업데이트되었지만 ETag에 정의 된 것과 동일한 내용이있는 문서 세트가 매우 작아야하기 때문이라고 가정합니다.
If-Modified-Since 는 날짜를 사용하고 If-None-Match 는 ETag를 사용합니다 . "페이지"(예 : HTML) 및 기타 파일에 모두 사용할 수 있습니다.
서버에서 약하다고 명시하지 않는 한 ETag는 강력한 유효성 검사기로 간주되므로 조건부 범위 요청을 포화시키는 데 사용할 수 있습니다. 그러나 대부분의 자동 생성 ETag는 종종 inode 정보 및 / 또는 고유 한 영구 카운터를 사용하기 때문에 서버 팜 상황에서 어려움을 나타냅니다. 실제로 파일의 쓰기 시간이 합리적으로 좋은 유효성 검사기를 만들기 때문에 Last Modified 헤더가 상당히 정적 인 콘텐츠 (예 : 보호 된 정적 콘텐츠 제공)에 충분하다는 것을 발견했습니다.
ETag는 가장 유연합니다. 준수하는 클라이언트는 조건부 요청으로 ETag를 전송해야하지만 가능한 경우 둘 다 전송해야합니다 (SHOULD).