문제

if-modified-since와 if-none-match의 차이점은 무엇입니까? if modified-since가 페이지에 사용되는 반면 파일에 사용되지 않는다고 생각하는 느낌이 있습니까?

도움이 되었습니까?

해결책

간의 차이점에 대해 Last-Modified/If-Modified-Since 그리고 ETag/If-None-Match:

둘 다 상호 교환 적으로 사용할 수 있습니다. 그러나 리소스의 유형과 리소스의 유형에 따라 서버에서 생성되는 방법에 따라, 하나 또는 다른 질문 ( "이것은 ... 이후로 수정 되었는가?" / "이 ETAG에 여전히 일치합니까?")에 대답하기가 더 쉬울 수 있습니다. .

예 :

  • 파일을 사용하는 경우 파일을 사용합니다 mtime 로서 Last-Modified 날짜는 가장 간단한 솔루션입니다.
  • 여러 SQL 쿼리에서 구축 된 동적 웹 페이지를 제공하는 경우 해당 쿼리가 반환 한 데이터가 변경된지 여부를 확인하면 비현실적 일 수 있습니다 (모든 종류의 "마지막 수정 된"열이없는 한). 이 경우, 예를 들어 페이지 컨텐츠의 MD5 해시를 ETag 훨씬 쉬울 것입니다.
    OTOH, 이것은 조건부 GET을 위해서도 서버에서 전체 페이지를 생성해야한다는 것을 의미합니다. ETAG (1 차 키, 개정 번호 등)에 정확히 들어가야하는 것을 알아 내면 여기에서 많은 시간을 절약 할 수 있습니다.

주제에 대한 자세한 내용은 다음 링크를 참조하십시오.

다른 팁

If-Modified-Since .와 비교됩니다 Last-Modified 반면 If-None-Match 비교됩니다 ETag. 둘 다 Modified-Since 그리고 ETag 리소스의 특정 변형을 식별하는 데 사용할 수 있습니다.

그러나 비교 If-Modified-Since 에게 Last-Modified 캐시 된 변종이 있는지 여부에 대한 정보를 제공합니다 나이가 많습니다 또는 최신 반면 비교 If-None-Match 에게 ETag 둘 다 있는지 여부에 관계없이 정보를 제공합니다 동일한 아니면 아니에요. 또한 대부분의 작업을 수행합니다 ETag 생성기에는 시스템의 정보가 포함됩니다 inode 따라서 파일을 다른 드라이브로 이동하면 ETag 또한.

마지막으로 수정 된/if 모형에 사용되는 타임 스탬프 값은 정밀도가 제한되어 있습니다. 1 초가되며 예를 들어 주어진 초에 하나 이상의 메시지를 게시 할 수있는 웹 채팅 애플리케이션과 같은 빠르게 변화하는 콘텐츠에 충분하지 않습니다. . ETAG/IF-NONE MATCH는 해당 문제를 해결하는 데 도움이 될 수 있습니다.

Google의 모범 사례에 명시된 바와 같이 :

모든 캐시 가능한 리소스에 대해 만료 또는 캐시 제어 Max-AGE 중 하나와 마지막으로 수정 된 또는 ETAG 중 하나를 지정하는 것이 중요합니다. 만료 및 캐시 제어를 지정하는 것이 중복되거나 최대 수정 및 ETAG를 지정하는 것이 중복됩니다.

https://developers.google.com/speed/docs/best-practices/caching

수정 된 경우 날짜를 사용합니다 일치하지 않는 경우 an 에타그. "페이지"(예 : HTML) 및 기타 파일에 모두 사용할 수 있습니다.

서버에 의해 약한 것으로 언급되지 않는 한, ETAG는 강력한 유효성 검사기로 간주되므로 조건부 원거리 요청을 자극하는 데 사용할 수 있습니다. 그러나 대부분의 자동 생성 된 ETAG는 서버 팜 상황에서 어려움을 나타냅니다. 이들은 종종 inode 정보 및 / 또는 고유 한 지속적인 카운터를 사용하기 때문입니다. 실제로, 나는 파일의 쓰기 시간이 합리적으로 우수한 유효성 검사기를 만들기 때문에 마지막으로 수정 된 헤더가 보호 된 정적 컨텐츠를 제공하는 것으로 충분하다는 것을 알았습니다.

ETAG는 가장 유연합니다. 순응 클라이언트는 조건부 요청으로 ETAG를 보내야하는 반면, 가능한 경우 두 가지를 모두 보내야합니다.

if-modified-since 헤더는 브라우저가 마지막으로 요청 된 리소스를 수신 한 시간을 지정하는 데 사용됩니다. if-none-match 헤더는 요청 된 자원이 마지막 수신되었을 때 서버가 발행 한 엔터티 태그를 지정하는 데 사용됩니다.

설명 된 두 가지 방법 으로이 헤더는 브라우저 내의 컨텐츠 캐싱을 지원하는 데 사용되며 서버가 브라우저에 자원의 전체 내용에 응답하지 않고 브라우저에 캐시 된 리소스의 사본을 사용하도록 지시 할 수 있습니다. 필요하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top