Cloudflare, Cache Rules에 Vary 헤더 지원 출시… 캐시 파편화 문제 해결
핵심 내용
Cloudflare가 Cache Rules에 Vary 헤더 지원을 출시해 헤더 정규화 및 캐시 우회 설정으로 파편화 문제를 해결한다.
자세히 보기
Cloudflare가 Cache Rules에 Vary 헤더 지원 기능을 전 플랜(Free, Pro, Business, Enterprise)에 출시했다. 기존에는 Origin이 Vary 헤더를 반환할 때 캐시 동작을 세밀하게 제어하기 어려웠으나, 이제 사용자가 헤더 값의 정규화(normalize), 정확한 전달(passthrough), 또는 캐시 우회(bypass) 중 하나를 선택하여 캐시 키 생성 방식을 결정할 수 있다.
Vary 헤더의 한계와 캐시 파편화
Vary 헤더는 응답에 영향을 미치는 요청 필드를 캐시에 알리지만, 어떤 차이가 실제로 중요한지 구분하지 못한다. Origin은 수천 개의 헤더 값을 소수의 실제 표현(representations)으로 매핑하지만, 캐시는 공백, 순서, quality value 등 원시(raw) 값의 차이를 구분하여 불필요한 캐시 항목을 생성한다. 이는 **캐시 파편화(Cache Fragmentation)**를 유발하며, 특히 User-Agent나 Cookie 같은 고카디널리티 헤더가 포함될 경우 캐시 적중률이 급격히 하락하고 Origin 부하가 증가한다.
새로운 처리 로직과 Action
새로운 Cache Rules는 Origin이 Vary로 지정한 헤더에 대해 다음과 같은 Action을 적용한다.
- Normalize (권장 기본값): Accept, Accept-Language, Accept-Encoding 등의 값을 소문자화하고 quality value 기준 정렬하여 캐시 키를 표준화한다. 클라이언트 요청 순서는 캐시 키에 영향을 주지 않는다.
- Passthrough: 대소문자, 공백, 순서, 중복 값 차이를 보존한다. Origin이 정확한 값 차이를 필요로 하는 경우에만 사용해야 하며, 불필요한 변형을 생성할 위험이 있다.
- Bypass: 개인 정보나 무제한 값의 헤더에 대해 캐시를 우회한다.
Vary: *가 포함된 응답은 항상 캐시를 우회한다. 첫 요청 시 Cache Rule이 Origin 요청 전 필드를 정규화하여 캐시 키와 Origin 응답의 정합성을 유지하며, 이후 요청에서는 저장된 Vary 필드 기반 변형을 직접 조회하여 캐시 히트 여부를 판단한다.
설정 가이드 및 주의사항
Vary 설정은 Cloudflare Dashboard(Caching > Cache Rules) 또는 Rulesets API를 통해 가능하다. Custom Cache Key와 Vary의 선택 기준은 다음과 같다.
- 요청 속성이 항상 리소스를 정의한다면 Custom Cache Key를 사용한다.
- Origin이 캐시 가능한 응답 전체에서 동일한 요청 필드 집합을 선언한다면 Vary를 사용한다.
Vary 설정 변경 시 기존 콘텐츠는 자동 purge되지 않으므로, 새 정책으로 인한 캐시 키 변경 시 기존 항목은 만료되거나 수동 purge 전까지 잔존한다. 또한, http_request_cache_settings entrypoint에 대한 PUT 요청은 해당 entrypoint의 모든 규칙을 대체하므로 주의가 필요하다. Cloudflare는 향후 Origin이 직접 표현(representations)을 설명할 수 있는 Availability Hints 초안의 아이디어를 평가 중이다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.