워드프레스 사이트를 위한 클라우드플레어 풀 페이지 캐시 셋업 방법

2019년 3월 25일

클라우드플레어 (Cloudflare) 는 DNS, CDN, 보안 등 기능을 제공하는 인기있는 서비스입니다. 이는 종종 워드프레스 사용자들에게 있어서 웹사이트의 속도 및 보안 향상을 위해 사용되곤 하는데요. 클라우드플레어는 자동으로 CSS, JS, 이미지 등의 고정 자산을 캐시 화 합니다. 여기에 조금만 노력한다면, 클라우드플레어는 “모든것을 캐시 화 할 수 있는”, 다시 말하자면 여러분 웹사이트의 고정 HTML의 사본이 세계 곳곳에 있는 클라우드플레어의 데이터센터를 통해 캐시 화 되고 관리되게 할 수 있습니다. 이 포스트에서는 클라우드플레어의 “풀 페이지 캐시” 기능에 대해 알아볼텐데요. 이를 통해서 이 기능이 여러분 워드프레스 사이트에 적합한지 알아볼 수 있습니다.

풀 페이지 캐시 (Full Page Cache) 는 누구를 위한 것인가?

클라우드플레어의 풀 페이지 캐시 기능은 모두를 위한 것은 아닙니다. 일반적으로, 대규모의 다이나믹한 웹사이트를 운영하는 워드프레스 유저들은 풀 페이지 캐시를 사용하지 않는 것이 맞습니다. 다이나믹한 워드프레스 사이트의 예로 들 수 있는 것이 우 커머스 스토어 (WooCommerce) 인데요, 이는 “장바구니”와 청구서 발부 등의 기능을 포함하고 있습니다. 여기서 클라우드플레어의 풀 페이지 캐시 기능이 사용된다면, 어떤 고객의 장바구니가 캐시 화 되어 다른 고객들에게 넘어가게 되겠죠. 비슷하게, 체크아웃 상에서의 이름과 주소 등의 정보들이 캐시 화 될 것입니다.

만약 어러분이 기본적인 블로그나 간단한 비지니스 웹사이트를 운영한다면, 클라우드플레어 풀 페이지 캐시 기능은 엄청난 퍼포먼스 향상을 불러올 수 있습니다. 한 가지 명심해야 될 점은 워드프레스의 기본 댓글 기능은 풀 페이지 캐시 기능과 잘 연동이 되지 않는 점인데요 — 클라우드플레어의 캐시가 클리어 되기 전 까지 새로운 댓글들을 볼 수 없는 것과 같습니다. 위의 정보들을 토대로 해보면, 지금 이 웹사이트는 클라우드플레어 풀 페이지 캐시 기능을 위한 최고로 적합한 후보인데요. 스토어, 댓글, 연락처 기능 등이 없는 거의 고정적인 기능을 가지기 때문입니다.

클라우드플레어 풀 페이지 캐시 셋업 방법

여러분의 워드프레스 사이트에 클라우드플레어 풀 페이지 캐시를 셋업하기 위해서는, 아래의 그림과 같은 페이지 규칙을 설정해야 합니다. decrypto.net 을 여러분의 도메인 이름으로 바꾸시는 것을 잊지 마시길 바랍니다.

클라우드플레어 풀 페이지 캐시 속도 테스트

아래는 클라우드플레어 풀 페이지 기능을 사용시, 그리고 사용하지 않을 시에 대한 속도의 예 입니다. 참고로 제 서버는 미국 LA에 위치해 있으며, 속도 테스트는 KeyCDN으로, 샌프란시스코와 도쿄로부터 이루어졌습니다.

샌프란시스코 — 풀 페이지 캐시 사용 안 함

제 서버가 LA에 위치해 있기 때문에 퍼포먼스는 풀 페이지 캐시를 사용하지 않고도 이미 상당했습니다.

샌프란시스코 — 풀 페이지 기능 사용

클라우드플레어 풀 페이지 캐시를 사용 시, 로딩 시간은 40% 정도 감소한 98.913ms 입니다.

도쿄 — 풀 페이지 기능 사용 안 함

클라우드플레어 풀 페이지 캐시 기능은 서버와 사용자 간에 지리학적으로 큰 차이가 있을 경우에 아주 뛰어나게 작용합니다. 제가 디크립토를 위해 Kinsta’s high performance web hosting 을 사용하기 때문에, KeyCDN의 속도 테스트 툴을 도쿄에서 사용했을 시, 클라우드플레어 기능을 사용하지 않아도 로딩 시간은 587.867ms로 굉장히 빠른 편이었습니다.

도쿄 — 풀 페이지 캐시 기능 사용

클라우드플레어 풀 페이지 기능을 사용 시, 로딩 시간은 64.395ms로 89%정도나 감소하였습니다. 다른 말로 하자면, 클라우드플레어 풀 페이지 캐시 기능은 도쿄의 사용자로 하여금 이 웹사이트를 9배나 더 빠른 속도로 접할 수 있게 한 것이죠 — 이는 디크립토에게 있어서 아주 중요한 것인데요. 디크립토는 일본, 한국, 중국의 고객들을 위한 컨텐츠도 제공하고 있기 때문입니다.

클라우드플레어 풀 페이지 캐시 바이패스

풀 페이지 캐시를 사이트 전체에 사용하는 것이 좋지 않을 때도 가끔 있습니다. 대부분 고정적인 자료를 지닌 디크립토와 같은 사이트도 클라우드플레어의 풀 페이지 캐시 기능을 사용하지 않아야 하는 부분들이 있는데요 — 웹사이트 메인화면과 기록 보관소를 예로 들 수 있습니다. 하지만 다행이게도, 클라우드플레어 풀 페이지 캐시 기능을 선택적으로 적용할 수 있는 방법이 있습니다.

클라우드플레어 워드프레스 플러그인

클라우드플레어의 공식 워드프레스 플러그인은 “자동 캐시 삭제” 기능이 있는데요, 이는 “웹사이트에 변화가 있을 시” 자동으로 캐시를 클리어하게 되어 있습니다. 아마도 이는 새로운 포스트가 작성되거나 기존의 포스트 등이 업데이트 될 시 자동적으로 캐시를 클리어한다고 볼 수 있겠죠. 저 개인적으로는 최소한의 플러그인만을 사용하기를 원해서 이 플러그인을 사용하고 있지는 않습니다. 이 플러그인이 광고된 대로 실제로 작동한다면, 필요에 의해 자동으로 캐시를 삭제하는, 바이패스 기능을 하는 플러그인으로 사용 될 수 있을 것입니다.

선택적인 클라우드플레어 페이지 규칙 설정

선택적 페이지 규칙 설정이 바로 제가 디크립토 상에서 클라우드플레어 풀 페이지 캐시 기능을 사용하는 방법인데요. 이 방법의 장점이라면 아주 편리하고 설정하기가 쉽다는 점입니다. 단점이라면, 유료라는 점인데요. 이는 사실 세 페이지 이상의 규칙을 설정해야 하는 것과 같기 때문입니다. 제게 있어서 이는 큰 문제는 아닌데요, 저는 한 달에 $20하는 클라우드플레어 프로 플랜을 사용하고 있으며 이는 20 페이지 규칙과 기타 다른 유용한 기능등을 포함하고 있기 때문입니다.

제 클라우드플레어 페이지 규칙들은 다음과 같습니다.

페이지 규칙은 “먼저 일치하는 것에 사용되는” 등의 형태를 띄기 때문에 URL *decrypto.net/* 는 우선순위 리스트 중 가장 아래에 위치하게 됩니다. 캐치-올 URL 상위에 위치하는 다양한 URL들은 풀 페이지 캐시가 사용되면 안되는 것들이죠. 저 개인적으로는 클라우드플레어 풀 페이지 캐시 기능을 세부적으로 컨트롤 할 수 있는 이 방법을 선호합니다. 만약 여러분이 클라우드플레어 무료 플랜을 사용하고 있는 상태에서 이 기능을 사용해보고 싶으시다면, 5 페이지 규칙을 사용할 수 있는 한 달에 $5짜리 플랜을 사용해 볼 것을 추천해 드리고 싶습니다.

근원 서버 캐시-컨트롤

클라우드플레어의 “캐시-컨트롤” 세팅은 “존재하는 헤더를 보호”하는 형태로 사용될 수 있는데요. 이 뜻은 클라우드플레어가 근원 서버의 캐시-컨트롤 세팅을 덮어쓰지 않는 다는 것입니다. 따라서, 일치하는 페이지 템플릿에 아래의 PHP 코드를 추가하여 특정 페이지의 클라우드플레어 캐시 기능을 사용하지 않도록 할 수 있습니다.

<?php

header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

?>

여러분의 테크 관련 실력이나 서버 환경 등에 따라 커스텀 캐시-컨트롤 헤더를 삽입하는 것이 풀 페이지 캐시 기능을 특정 페이지에 바이패스하는 것과 비슷한 효과를 불러올 수도 있습니다. 예를 들면, index.php 템플릿 상위에 코드를 삽입하게 되면, 클라우드플레어는 여러분의 홈 페이지를 캐시 화 하지 않게 되는 것이죠.

결론

클라우드플레어 풀 페이지 캐시 기능은 여러분의 워드프레스 사이트의 속도를 크게 향상 시킬 수 있는 굉장한 툴입니다 — 특별히 해외의 고객들을 위해서 말이죠. 만약 여러분이 일반 블로그나 고정적인 비지니스 웹사이트를 운영하신다면, 저는 클라우드플레어 풀 페이지 캐시 기능을 사용할 것을 적극적으로 추천해 드립니다. 만약 여러분이 좀 더 다이나믹한 우 커머스 스토어나 비비프레스 (bbPress) 포럼 등과 같은 사이트를 운영하신다고 해도 특정 URL에만 클라우드플레어 풀 페이지 기능을 적용하는 형태로 큰 혜택을 보실 수 있습니다.


궁금한게 있으세요?

트위터이메일을 통해 연락주시기 바랍니다.