← 전체 글로 돌아가기

API

Cloudflare 캐시에서 사용자 API와 정적 파일을 분리한 비교 기록

오래된 통계 응답이 보인 뒤 CDN 캐시 대상을 공개 콘텐츠와 개인 API로 나눈 기준

숫자를 바꿨는데 화면은 그대로였다

관리자 통계 기준일을 수정했지만 새로고침해도 이전 값이 나왔다. 원본 서버 로그에는 요청이 없고 응답에는 CF-Cache-Status: HIT가 있었다. 브라우저 캐시 문제가 아니라 CDN 규칙이 원인이었다.

응답 성격별로 정책을 나눴다

대상정책
해시가 붙은 JS/CSS긴 캐시, immutable
공개 글 HTML짧은 캐시와 배포 후 purge
로그인 사용자 APIprivate, no-store

개인 API에는 다음 헤더를 명시했다.

Cache-Control: private, no-store
Vary: Cookie, Authorization

확인 명령

curl -sI https://example.com/api/me
curl -sI https://example.com/assets/app.abc123.js

첫 요청과 두 번째 요청의 CDN 헤더를 비교했고, 전체 purge 대신 경로별 규칙을 만들었다. 캐시를 켤지보다 그 응답을 다른 사용자와 공유해도 되는지를 먼저 판단하는 기준으로 바꿨다.

  • 인증 응답에 public이 남지 않았는가
  • 정적 파일명이 빌드 해시를 가지는가
  • HTML 갱신 시 purge 순서가 정해졌는가
  • 브라우저 캐시와 CDN 캐시를 구분했는가