반응형

Chapter 13. ETag를 설정하라.


사용자가 경험을 향상시키기 위한 최선의 방법은 페이지 렌더링에 필요한 HTTP 요청수를 줄이는 것이다.


1. ETag란 무엇인가?

웹서버와 브라우저가 캐시된 구성요소의 유효성을 확인하기 위해서 사용하는 메커니즘이다.


ㄱ. 헤더의 Expires.

헤더 Expires에 설정된 만료기한이 지나지 않았다면 구성요소는 새로운 것이라 판단한다. 권고된 기간은 1년미만이지만 브라우저는 1년이상의 만료기한을 지원한다.


ㄴ. 조건부 GET 요청.

서버의 구성요소와 캐시된 구성요소가 같은 파일인지 결정하는 두 가지 방법이 있다. 

마지막 수정일을 비교한다.

ETag를 비교한다.


ㄷ. 마지막 수정일.

구성요소의 마지막 수저일은 서버에서 응답헤더의 Last-Modified 를 통하여 반환된다. 다음번에 다시 요청이 되면 브라우저는 If-Modified-Since 헤더를 이용해서 마지막 수정일을 서버로 전달한다.


ㄹ. ETag.

ETag(Entity Tag)는 브라우저의 캐시에 저장되어 있는 구성요소와 원본 서버의 구성요소가 일치하는지 판단하는 또 다른 방법이다. 구성요소를 나타내는 값을 따옴표의 고유한 문자열로 응답헤더의 ETag에 지정한다.


2. ETag 의 문제.

ETag의 문제점은 해당 값이 서버당 하나이기 때문에 여러 서버로 운영되는 서비스일 경우 값이 일치하지 않게 된다. 이러한 문제는 또한 프록시 캐시의 효율 또한 떨어뜨린다.


3. ETag 사용해야 하나 버려야 하나?

Last-Modified 헤더가 이미 동일한 정보를 담고 있기 때문에 Etag를 제거하면 요청이나 응답의 헤더 크기 또한 줄일 수 있다. 아파치에서는 "FileEtag none"을 사용하면 간단하게 제거할 수 있다.


ETag의 구조를 변경하거나 삭제하라.


반응형

+ Recent posts