앞서 설명했듯 클라우드플레어는 기본적으로 들어온 클라이언트의 요청을 프록시 형태로 실제 서버에 전달해 결과를 되돌려 받은 후 클라우드플레어 서버에서 결과를 다시 클라이언트로 전달해준다. 단순히 해당 값을 클라이언트에 전달하는 것으로 끝이 아니라, 들어온 웹주소를 기반으로 결과를 캐시를 한 후 해당 값을 클라이언트에 전달한 데이터를 캐시로 남겨두는 것이다. 캐시가 살아있는 동안 동일한 요청이 들어올 경우 서버와는 데이터의 변경여부만 체크하고 바로 캐시서버에서 데이터를 전송함으로서 서버의 부하를 줄이고, 데이터 절약이 가능하게 하는 것이다.
클라우드플레어의 이 캐시 기능은 단순히 웹페이지(HTML), 자바스크립트(JS), 스타일시트(CSS) 뿐만 아니라 이미지까지 캐시를 지원하기 때문에 데이터의 절약은 더더욱 효과가 크다. 특히 최신글 일부에 뷰가 집중되는 커뮤니티 사이트의 경우에는 트래픽을 극적으로 절약할 수 있으므로 효과가 극대화 된다고 할 수 있다.
또한 전세계에 분산되어있는 클라우드플레어 CDN 센터(
#)간에 데이터를 빠르게 전달해 분산시키기 때문에 여러구간을 거치며 지연되는 문제를 회피할 수도 있고, 실질적으로는 서비스 속도 향상으로도 이어지는 효과를 기대할 수 있다. 원래 프록시 서버의 용도가 그러하듯.
클라우드 플레어를 CDN으로 사용하면 설정에 따라 정기적으로 웹사이트를 데이터센터에 캐싱한 뒤, 방문자의 접속 위치에 따라 가장 가까운 데이터센터에서 캐싱 데이터를 전송해준다.
캐시를 하는 방식은 크게 기본(Basic), 단순(Simplified), 공격적(Aggressive)의 세가지 등급으로 나뉘는데, 세가지 방식은 기본적으로 아래와 같은 특성을 가진다.
html, js, css, jpg등의 고정된 데이터에 한해서 캐시한다
?ignore=this-query-string
웹주소의 전달값(쿼리)을 삭제하고 단순화된 정적인 데이터만을 캐시한다. 게시판 등의 동적인 데이터의 주소를 캐시하지 않게 만든다. 쿼리값이 실제 페이지에 영향을 미치는 것이 별로 없을 때는 이쪽이 더 효율적일 수 있다.
?with=query
웹주소의 전달값(쿼리)를 포함한 캐시값을 만든다. 게시판 등의 동적 데이터를 포함해서 캐시한다. 웹 어플리케이션에 따라서 동적인 값과 캐시된 값 사이의 괴리가 발생하는 경우가 발생할 수 있다. 예를 들어서 로그인을 했는데 캐시값 때문에 로그인 안한 상태로 보인다던가 하는 식.