오리진 서버 응답 후 캐싱 전에 실행되는 캐시 응답 규칙(Cache Response Rules) 도입으로 캐싱 제어 강화
`Set-Cookie`, `ETag` 등 캐싱을 방해하는 헤더를 오리진 수정 없이 제거하여 캐시 히트율(Cache Hit Ratio) 개선
`Cache-Control` 지시문 수정, 캐시 태그(Cache Tag) 관리 등 정교한 캐싱 전략 구현 지원
기존 캐시 규칙(Cache Rules)과 함께 사용하며, 응답 단계에서의 캐싱 제어를 가능하게 함
캐시 응답 규칙(Cache Response Rules)은 오리진 서버의 응답이 Cloudflare에 도착한 후, 캐시에 저장되기 직전에 실행되는 새로운 규칙 유형임.
요청 단계(Request Phase)의 캐시 규칙(Cache Rules)과 달리, 응답 단계(Response Phase)에서 작동하여 캐싱에 영향을 미치는 헤더(`Set-Cookie`, `ETag`, `Last-Modified`)를 제거하거나 `Cache-Control` 지시문을 수정함.
이를 통해 오리진 서버 코드 변경 없이 캐시 히트율(Cache Hit Ratio)을 높이고 성능을 개선할 수 있음.
캐시 규칙(Cache Rules)과 충돌 시, 캐시 응답 규칙(Cache Response Rules)이 우선 적용되어 최종 캐싱 결정을 내림.
기존에는 `Set-Cookie` 헤더가 포함된 정적 에셋도 캐시되지 못하는 문제가 있었으나, 캐시 응답 규칙(Cache Response Rules)의 `set_cache_settings` 액션을 통해 이를 해결함.
`strip_set_cookie`, `strip_etags`, `strip_last_modified` 옵션을 사용하여 캐싱을 방해하는 불필요한 헤더를 제거할 수 있음.
이는 특히 세션 쿠키(Session Cookie)가 모든 응답에 포함되는 프레임워크 환경에서 유용하며, 오리진 서버 수정 없이도 해당 에셋을 캐싱 가능하게 만듦.
트레이드오프: `ETag`와 `Last-Modified` 헤더를 제거하면 스마트 에지 재검증(Smart Edge Revalidation) 기능이 비활성화될 수 있음.
캐시 응답 규칙(Cache Response Rules)은 `set_cache_control` 액션을 통해 `max-age`, `s-maxage`, `private`, `no-cache`, `no-store` 등 다양한 `Cache-Control` 지시문을 세밀하게 제어함.
`cloudflare_only: true` 옵션을 사용하면 Cloudflare 내부 캐시에만 적용되고 브라우저에는 원본 지시문을 전달하여, 캐시 수명(Cache Lifetime)을 분리하는 것이 가능함.
예를 들어, Cloudflare에는 30일 캐시하고 브라우저에는 1일 캐시하도록 설정하여 캐시 효율성과 사용자 경험을 동시에 최적화할 수 있음.
이는 오리진 서버에서 별도의 헤더를 설정하는 것과 유사한 효과를 내지만, Cloudflare 대시보드에서 직접 설정할 수 있다는 장점이 있음.
기존 CDN에서 사용하던 캐시 태그(Cache Tag) 형식을 Cloudflare의 형식으로 변환하는 데 캐시 응답 규칙(Cache Response Rules)이 유용하게 사용됨.
`set_cache_tags` 액션과 `split()` 함수를 활용하여, 기존 `Surrogate-Keys` 같은 헤더 값을 Cloudflare의 `Cache-Tag` 형식으로 변환할 수 있음.
이를 통해 기존 오리진 도구의 변경 없이 즉시 Cloudflare의 태그 기반 퍼지(Purge-by-Tag) 기능을 활용할 수 있게 됨.
`split()` 함수의 세 번째 인자는 결과 배열의 최대 크기를 지정하며, 전역적으로 150ms 이내의 빠른 퍼지 작업을 지원함.
두 규칙 유형은 캐싱 결정의 서로 다른 단계에서 작동하며 상호 보완적인 역할을 수행함.
캐시 규칙(Cache Rules): 요청 단계에서 작동하며, 캐시 가능 여부(Eligibility), 캐시 키(Cache Key), 엣지 TTL(Edge TTL) 등 캐시 대상과 기본 설정을 결정함.
캐시 응답 규칙(Cache Response Rules): 응답 단계에서 작동하며, 이미 결정된 캐시 키를 기반으로 캐시 방법(How)과 캐시 가능 여부(Whether)를 최종적으로 조정함. 예를 들어, 캐시 가능했던 응답을 `no-store`로 변경하거나, 캐시 불가능했던 응답에서 `Set-Cookie`를 제거하여 캐시 가능하게 만듦.
캐시 응답 규칙은 요청 단계에서 결정된 캐시 키를 변경할 수는 없음.