ETag를 사용하고 사용하지 않는 경우


9

방금 WebPageTest.org 사이트를보고 있었고 웹 사이트 속도를 높이기위한 권장 사항 중 하나는 다음과 같습니다.

ETag 헤더는 특별한 이유가없는 한 일반적으로 사용하지 않아야합니다.

이것이 무엇을 의미하는지 궁금했습니다. 그것은 당신이 알고있는 정적 컨텐츠가 변경되어서는 안된다는 것을 의미합니까, 또는 당신이 알고있는 컨텐츠가 규칙적으로 바뀌어야한다는 것을 의미합니까? 그렇지 않다면 일반적으로 사용하지 않아야한다는 의미입니까? 특정한 필요.

후자 인 경우 언제 사용해야합니까? 도움을 주셔서 감사합니다.

답변:


8

ETag는 캐시 유효성 검사를 결정하기 위해 "Last-Modified-Time"을 대신 할 수 있지만 "Last-Modified-Time"과 함께 사용할 수 있습니다.

클라이언트는 ETag를 기반으로 if-matches 또는 if-none-matches와 같은 사전 조건을 보낼 수 있습니다. 이는 GET 요청 (웹 페이지 test.org의 기능)만을위한 것이 아니며, "기회 적 업데이트"를 사용하여 PUT 요청에 사전 조건이 있고 ETag 이후 리소스가 업데이트 된 경우 업데이트 작업을 수행하지 않습니다. 마지막 획득.

간단히 말해 : CMS의 페이지에서 편집을 누르고 친구가 CMS의 페이지에서 편집을하고 친구가 편집을 수행하고 저장 한 후 마지막으로 저장합니다. ETag 또는 Content-MD5 HTTP 헤더없이 친구 변경 사항을 지우는 등의 문제가 발생하지 않도록 휠을 다시 만들려면 솔루션이 이미 HTTP 프로토콜의 일부이므로 사용하는 것이 좋습니다.

일반적으로 나는 "one size fit all"충고에 대해 AOL (webpagetest.org를 운영하는)에 동의합니다-두 번째 차이가있을 때 암호 문자열 (ETag는 일반적으로 예쁘거나 사람이 읽을 수 없습니다)로 HTTP 헤더를 막지 않는 것이 좋습니다 ( Last-Modified-Time에서 감지 할 수있는 작업)을 수행합니다.

페이지가 1 초에 여러 번 업데이트되고 가장 정확한 최신 버전을 표시해야하는 경우 HTTP GET 이외의 솔루션을 실험하거나 ETag를 사용하는 것이 좋습니다.

ETag에 파일 시스템, 서버 구성 변경 등의 정보 (예 : Apache의 기본 inode)가 포함되지 않도록주의하십시오. 그렇지 않으면 두 개의 서버가있을 때 문제가 발생합니다 (각각의 ETag가 일치하지 않음).


괜찮아. 확실하지 않은 한 가지 예가 있습니다. 모바일 또는 Internet Explorer 버전과 같은 하나의 URI에 여러 버전의 콘텐츠가있는 경우 ETag를 사용하여 모든 버전을 통해 일치하는 항목을 검색 할 수 있습니다 (따라서 if- 일치하지 않는 경우 일치하지 않음)-요청한 사람에 따라 다른 답변이 있습니다 (예 : 여러 표현에 대한 하나의 영구 URI가 없음 등).
Metalshark

7

YSlow Firebug 플러그인 (WebPageTest.org에서 평가 기준으로 사용하는 것으로 나타남)에 대한 코딩 호러의 탁월한 평가 를 역설하려면 :

"야후는 세계에서 가장 바쁜 웹 사이트 중 하나입니다. 문제는 아마 여러분 의 문제가 아닙니다 ."

매일로드 밸런싱 된 네트워크에서 수백만 개의 고유 항목을 다루지 않는 경우 사이트를 최적화 할 때 제공된 제안 이 올바른 선택 이 아닐 수 있습니다.


의견에 감사하지만 당신은 틀 렸습니다. Steve Sounders는 여기에 설명합니다 : stevesouders.com/blog/2010/09/07/webpagetest-org-and-page-speed (그는 유용한 개선 의 큰 지지자입니다 . 이러한 개선으로 속도가 빨라질 수있을만큼 충분히 커졌습니다 (이미 이미 있음).
Django Reinhardt

2
yslow firebug extension은 이제 대부분의 사이트에서 훨씬 더 현실적인 작은 사이트에 대한 테스트를 포함합니다.
John Conde

1
@Django 라인 하르트 - 나는 그것이 사실이다, 내 대답을 재 진술 많은 ! 제안의 어떤 사이트에 유효하지만, 특히 ETag를가 Y에, 논쟁 때문이다의 경우,로드 밸런싱 기능 충돌
danlefree

귀하가 제공 한 링크에는 Yahoo의 ETags ( developer.yahoo.com/performance/rules.html#etags )에 대한 링크가 포함되어 있습니다. (예, ETag를 제공하지 않는 것이 좋습니다.) 감사합니다.
Django Reinhardt

1
@ 장고 : 서버가 여러 개인 경우 ETag가 문제가 될 수 있습니다. 그러나 동일한 파일이 항상 동일한 ETag를 반환하는 한 완벽하게 좋습니다. 또한보십시오 : webmasters.stackexchange.com/questions/1459/…
DisgruntledGoat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.