2025. 05. 28

이짜젠·2025년 5월 28일
post-thumbnail

그놈의 캐시2

SSR 시에 이슈가 발생했을 경우, Next 서버에서 etag 를 갱신시켜주지 않는 이슈가 있었다.
따라서 CDN 에서 age가 s-max-age를 한참 지났음에도 불구하고 RefershHit From Cloudfront라는 메세지만 던져주고 있었다.

s-maxage
-> CDN 에서 사용될 캐싱기간

X-cache: RefreshHit from Cloudfront
-> revalidate 과정을 진행했으나 변경된 사항이 없어 캐시를 refersh 후 유지

e-tag
-> 캐시의 변경유무를 파악하기 위해 사용되는 값,
request header에 If-None-Match 값에 들어있는 etag 값과 비교한다.
값의 변경이 없다면 캐싱된 컨텐츠의 변화가 없음을 의미한다.

조금 더 동작/코드를 확인해봐야겠지만,
Next에서 SSR 과정에서 에러가 발생했을 경우, etag를 별도로 갱신하지 않는 것 같다.

대응방안

  • Etag를 통한 캐시체크를 하지 않도록 하거나,
    • next 서버가 Etag를 gernerate 하지 않도록 막을 수 있음 참고
    • Etag 가 없을경우 last-modfied 와 같은 다른 헤더값을 통해 캐시검증을 진행
  • 에러발생시에 response header에 Etag 를 직접 갱신해주는 로직을 넣어야 겠다.
profile
오늘 먹은 음식도 기억이 안납니다. 그래서 모든걸 기록합니다.

0개의 댓글