API
Cloudflare 캐시에서 사용자 API와 정적 파일을 분리한 비교 기록
오래된 통계 응답이 보인 뒤 CDN 캐시 대상을 공개 콘텐츠와 개인 API로 나눈 기준
숫자를 바꿨는데 화면은 그대로였다
관리자 통계 기준일을 수정했지만 새로고침해도 이전 값이 나왔다. 원본 서버 로그에는 요청이 없고 응답에는 CF-Cache-Status: HIT가 있었다. 브라우저 캐시 문제가 아니라 CDN 규칙이 원인이었다.
응답 성격별로 정책을 나눴다
| 대상 | 정책 |
|---|---|
| 해시가 붙은 JS/CSS | 긴 캐시, immutable |
| 공개 글 HTML | 짧은 캐시와 배포 후 purge |
| 로그인 사용자 API | private, 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 캐시를 구분했는가