Preventing API Caching While Enabling Static Asset Caching with Cloudflare Workers
API 엔드포인트를 Cloudflare Workers로 라우팅할 때 “엣지 캐시 금지”와 “정적 자산 캐시”를 분리하는 게 핵심
Hun Jang Nov 26, 2025
엣지 캐싱으로 인한 API 응답 문제 방지하기
API 엔드포인트를 Cloudflare Workers로 라우팅할 때 “엣지 캐시 금지”와 “정적 자산 캐시”를 분리하는 게 핵심이다. 아래처럼 하면 된다.
API 응답은 절대 캐시되지 않게 만들기
- 원칙:
Cache-Control: no-store를 보내면 Cloudflare(엣지)와 중간 프록시, 브라우저 어디에도 저장되지 않는다.
- 대체 가능:
no-cache,private,max-age=0도 엣지 기본 캐시를 막지만, API에는 의미가 가장 명확한no-store를 권장.
Worker 예시 (API 프록시)
캐시가 안 되는지 빠르게 확인
정적 문서/에셋은 따로 강하게 캐시
- 정적 경로(e.g.
/assets/,/docs/, 해시 파일)에만 아래 헤더: Cache-Control: public, max-age=31536000, immutable(해시 파일)- 변경 가능성이 있는 정적은
public, max-age=3600등 적당히
- API와 정적을 경로로 분리하면 운영이 쉬워진다. (
/v1/**vs/assets/**)
Worker 정적 캐시 예시
Cloudflare 캐시 규칙(대시보드) 팁
- Cache Rules에서
/v1/*경로에 대해 “Bypass cache” 또는 “Respect origin headers”로 설정해도 안전.
- 반대로
/assets/*는 “Cache Everything + Edge TTL 설정”을 주되, 원본에서도 적절한Cache-Control을 반환하면 일관성이 좋아진다.
- API 응답에
Set-Cookie가 있다면 캐시가 더 까다롭다. API는 애초에no-store로 통일.
빠른 체크리스트
API 경로는 Cache-Control: no-store
정적 경로는 public, max-age=…, immutable (해시 파일)
경로 분리(/v1/** vs /assets/**)
Cloudflare Cache Rules로 보조(필요 시)
curl -i로 헤더와 CF-Cache-Status 확인