CDN 엣지서버의 조건부 요청 비교
캐시가 오래된 경우 HTTP 캐시 유효성 검사기를 사용하여 파일의 캐시된 버전을 원본 서버의 버전과 비교합니다.
Verizon의 Azure CDN Standard/Premium
은 기본적으로 ETag 및 Last-Modified 유효성 검사기를 모두
지원하는 반면 Microsoft의 Azure CDN Standard
및 Akamai의 Azure CDN Standard
는 기본적으로
Last-Modified만 지원합니다.
- Verizon의 Azure CDN Standard/Premium은 기본적으로 ETag를 지원하지만 Microsoft의 Azure CDN 표준 및 Akamai의 Azure CDN 표준은 지원하지 않습니다.
- ETag는 모든 파일 및 파일 버전에 대해 고유한 문자열을 정의합니다.
- HTTP 1.1에 도입되었으며 Last-Modified보다 최신입니다. 마지막 수정 날짜를 결정하기 어려운 경우에 유용합니다.
- 강력한 유효성 검사(ETag, Last-Modified 모두 비교)와 약한 유효성 검사(Last-Modified 필드만 비교)를 모두 지원합니다. 그러나 Azure CDN은 강력한 유효성 검사만 지원합니다. 강력한 유효성 검사를 위해 두 리소스 표현은 바이트 단위로 동일해야 합니다.
- 캐시는 요청에서 하나 이상의 ETag 유효성 검사기와 함께 If-None-Match 헤더를 전송하여 ETag를 사용하는 파일의 유효성을 검사합니다. 컨텐츠의 ETag가 If-None-Match와 일치하면(캐시된 컨텐츠와 오리진 서버의 컨텐츠가 일치) 응답으로 상태코드 304 Not Modified(컨텐츠 동일)를 보냅니다. ETag가 다른 경우 서버는 상태 코드 200 OK(캐시 서버에서 오리진 서버로부터 최신 컨텐츠를 가져옴)와 업데이트된 리소스로 응답합니다.
- Verizon의 Azure CDN Standard/Premium의 경우에만 ETag가 HTTP 응답의 일부가 아닌 경우 Last-Modified가 사용됩니다.
- 원본 서버에서 리소스가 마지막으로 수정된 날짜와 시간을 지정합니다.
- 캐시는 요청에 날짜 및 시간과 함께 If-Modified-Since 헤더를 전송하여 Last-Modified를 사용하여 파일의 유효성을 검사합니다. 원본 서버는 해당 날짜를 최신 리소스의 Last-Modified 헤더와 비교합니다. 지정된 시간 이후 리소스가 수정되지 않은 경우 서버는 응답으로 304 Not Modified를 반환하고 리소스가 수정된 경우 서버는 상태 코드 200과 업데이트된 리소스를 반환합니다.
조건부 요청 (Last-Modified 비교)
- 캐시 서버에서 캐싱한 컨텐츠의 IMS 필드가 오리진 컨텐츠의 IMS 필드와 동일할 경우 오리진 서버는 304 Not Modified로 응답합니다.
- 캐시 서버에서 캐싱한 컨텐츠의 IMS 필드보다 오리진 컨텐츠의 IMS 필드가 더 최신일 경우 캐시 서버가 가지고 있는 컨텐츠는 stale하므로 오리진 서버로부터 컨텐츠를 갱신합니다.
조건부 요청 (ETag 비교)
- 캐시 서버에서 캐싱한 컨텐츠의 If-None-Match 필드와 오리진 서버의 If-None-Match가 동일할 경우 오리진 서버는 304 Not Modified로 응답합니다.
- 캐시 서버에서 캐싱한 컨텐츠의 If-None-Match 필드와 오리진 서버의 If-None-Match가 동일하지 않을 경우 캐시 서버에서 캐싱한 컨텐츠는 stale하므로 오리진 서버로부터 컨텐츠를 갱신합니다.
캐싱 컨텐츠의 유효성 검사 헤더에 ETag와 Last-Modified 두 헤더가 포함되어 있다면 일반적으로 ETag와 Last-Modified 중에서 우선 순위에 따라 요청 헤더에 ETag를 먼저 포함시켜서 비교하고 그 다음 Last-Modified를 요청 헤더에 포함시켜서 오리진에 요청하는 것이 일반적입니다.
엣지 서버는 CDN에게 요청을 전송할 때, 요청 헤더에 ETag 값을 포함시켜 오리진 서버와의 ETag 비교를 요청할 수 있습니다. CDN은 이 값을 기반으로 오리진 서버로부터 리소스가 변경되었는지 확인하고 변경되었다면 새로운 리소스를 가져올 수 있습니다.
만약 ETag 값을 통한 비교로 리소스가 비교되지 않았을 경우, 엣지 서버는 Last-Modified 값을 요청 헤더에 포함시켜 오리진 서버와의 Last-Modified 비교를 요청할 수 있습니다. CDN은 이 값을 기반으로 오리진 서버로부터 리소스가 변경되었는지 확인하고 변경되었다면 업데이트된 리소스를 가져올 수 있습니다.