MINGKYME 블로그

CDN nginx의 Cache 상태

기본적인 cache 상태

이해한 항목들.

  • HIT: 서버에 캐시되어 있음.
  • MISS: 서버에 캐시가 되어 있지 않음.
  • BYPASS: 캐시가 되어있는 여부와 관계 없이, Origin으로 넘김.
  • EXPIRED: 내가 가진 캐시가 TTL이 지났고, 원본과 다름. (만료됨.)
  • REVALIDATED: 내가 가진 캐시가 TTL이 지났고, 원본과 같음을 확인함. (재 갱신.)

아직 이해하지 못한 항목

  • STALE: 내가 가진 캐시가 TTL이 지났음, 하지만 Origin이 응답하지 않아 오래된 캐시로 응답함.
  • UPDATING: 내가 가진 캐시가 TTL이 지났음. 최신 데이터로 갱신 중인 상황임.

아직 두 항목에 대해서는 확인을 하지 못했다.

하지만 의미를 해석 시도했을 땐 이렇게 이해했다.

HIT와 MISS

그렇다면, 어디까지 HIT고 MISS 일까?

CDN 입장에서는 Body를 Origin에 요청하지 않으면 HIT라고 볼 수 있다.

즉, TTL이 지났지만, 내가 가진 캐시에서 Etag와 Last-Modified 를 이용해서 아직 신선한 캐시인지 확인하는 과정을 거쳐서

REVALIDATED 됐다면, 그건 HIT라고 볼 수 있다.

내가 사용한 공식은

(Edge 모든 요청 횟수 - Relay의 MISS, EXPIRED, BYPASS 횟수) /
Edge 모든 요청 횟수

이렇게 사용했다.

STALE 된 상태도 실제로는 cache의 값을 client에게 줬기 때문에 HIT로 취급했다.

참고 URL

https://www.nginx.com/blog/nginx-caching-guide/