본문 바로가기

Public Cloud/Cloudflare

[Cloudflare-CDN] HTTP Header를 무시하고 모든 콘텐츠 caching 하기

반응형

Caching Level 설정

Cloudflare 의 cache 정책은 기본적으로 파일 확장자를 기반으로 caching 을 수행한다.

 

Cloudflare Edge Server 에서 caching 정책은 WEB GUI Dashboard 에서 간단히 설정할 수 있다.

경로 : Caching - Configuration - Caching Level

 

No query string : querystring 이 없는 request 만 caching 한다. 동적콘텐츠는 caching 하지 않는다.

 - 예) GET /a.jpg

 - GET/a.jpg?t=asd123 과 같은 querystring 이 있는 request는 caching 하지 않는다.

Ignore query string : querystring 을 무시하고 caching 한다. 동적콘텐츠는 caching 하지 않는다.

 - 예) GET a.jpg?t=asd123 

Standard : querystring 이 다른 request는 다른 콘텐츠로 보고 각각의 request를 caching 한다. 마찬가지로 동적콘텐츠는 caching 하지 않는다.

 

참조 : https://developers.cloudflare.com/cache/how-to/set-caching-levels/

 

 

 

 

 

모든 콘텐츠 caching (동적 콘텐츠 포함)

Cloudflare에서 제공하는 Page Rule를 통해 URL과 match 되는 조건으로 Caching Level 을 설정 할 수 있다.

경로 : Rules - Page Rules - Create Page Rule

 

URL : asterisk(*) 를 사용하여 하위 경로를 모두 지정할 수 있다.

 - 예) www.a.com/test/*/plo.jpg

Cache Level 

 - Cache Everything : 동적 콘텐츠를 포함하여 지정하는 경로의 모든 콘텐츠를 caching 한다.

 - Bypass : 지정하는 경로는 caching 하지 않는다.

 

 

 

 

 

Client 브라우저 cache TTL 설정하기

경로 : Caching - Configuration - Browser Cache TTL

 

이 설정을 통해 Response Header 에 아래와 같은 값이 추가 된다.

Cache-Control : max-age = 14400

Cloudflare를 사용하는 Plan 에 따라 최소 값의 설정이 다르다.

참조 : https://developers.cloudflare.com/cache/how-to/edge-browser-cache-ttl/

 

 

 

 

HTTP Header를 무시하고 모든 콘텐츠 caching 하기

Cloudflare Edge 에서 Caching Level을 "Cache Everything" 으로 설정하여 모든 콘텐츠를 Caching 하여도 HTTP Header에 포함된 Cache-Control 값을 무시하지 않는다.

 

Cache-Control 에 no-store, no-cache, must-revalidate 와 같은 값은 "Cache Everything" 로 설정하여도 Edge에서 caching 하지 않는다.

 

이러한 HTTP Header를 무시하는 설정은 Page Rule에 Edge Server Cache TTL을 설정 하여 해결 할 수 있다.

 

경로 : Rules - Page Rules - Create Page Rule

 

Cache Level : Cache Everything

and

Edge Cache TTL : <TTL>

의 조합으로 지정한 Edge TTL 시간동안 지정한 URL의 모든 콘텐츠를 HTTP Header 를 무시하고 caching 할 수 있다.

 

이 설정을 통해 Cache HIT 율을 높이고 Revalidate 율을 낮추게 되므로 Origin 의 Traffic 또한 감소하게 된다.

 

 

* 주의

 - cache를 수행하는 서비스 도중 설정하게 될 경우 설정 시점부터 HIT나 MISS, EXPIRE, REVALIDATE 되는 request에 적용되는 건지 아니면 기존에 cache 되어 있는 콘텐츠에도 반영되는 건지는 알수 없다.

 - 따라서 설정 후 purge를 수행하는 것도 고려해야한다.

 

 

참조 : https://blog.cloudflare.com/edge-cache-expire-ttl-easiest-way-to-override/

 

Edge Cache Expire TTL: Easiest way to override any existing headers

CloudFlare makes caching easy. Our service automatically determines what files to cache based on file extensions. Performance benefits kick in automatically.

blog.cloudflare.com

 

 

Edge TTL 또한 Cloudflare를 사용하는 Plan 에 따라 최소 값의 설정이 다르다.

 

반응형