pulse.huny.dev
HunyDev
Preventing API Caching While Enabling Static Asset Caching with Cloudflare Workers

Preventing API Caching While Enabling Static Asset Caching with Cloudflare Workers

API 엔드포인트를 Cloudflare Workers로 라우팅할 때 “엣지 캐시 금지”와 “정적 자산 캐시”를 분리하는 게 핵심

Hun Jang
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 확인

 

You might also like

BlogPro logo
Made with BlogPro

Tags