워드프레스 캐시 최대한 활용하기

1. 워드프레스 사용자의 최대 고민 ‘속도’

워드프레스는 블로그 플랫폼 중에서는 느린 편에 속한다. 물론 CMS로 사용하는 사람들은 그리 느리다고 생각하지 않을 수도 있다. 워드프레스만큼 기능이 많으면서 속도까지 빠른 CMS는 거의 없기 때문이다. 하지만 워드프레스를 블로그로만 사용하는 사람들에게는 큰 불만일 수 있다. 특히 영세한 웹호스팅 업체를 사용해서 워드프레스 블로그를 운영하는 사람들이 대부분인 한국에서는 워드프레스의 속도에 불만을 느끼는 사람들이 꽤 많을 것이다.1

나 역시 워드프레스를 블로그로 사용하면서 속도에 대한 불만을 느꼈다. 그래서 여러가지 해법을 찾아왔었다. 내가 사용하고 있는 웹호스팅 업체가 싸고 성능이 안 좋은 업체여서 더 열심히 해법을 찾아왔던 것 갈다. 그것을 정리한 것이 바로 ‘워드프레스 속도, 성능 최적화하기’ @kalkin7라는 글이었다. 이 글에서 가장 중요한 부분 중에 하나가 바로 ‘캐시 플러그인의 사용’이다. 캐시 플러그인을 사용하면 블로그에 올린 글을 모두 HTML 파일로 만들어놓고, 방문자가 블로그에 접속하면 PHP 연산 없이 바로 미리 만들어진 HTML 파일을 전송한다. 워드프레스는 PHP가 DB에서 데이터를 가져와서 연산 후 HTML을 만드는 과정이 다른 CMS에 비해서 느린 편이다. 따라서 캐시 플러그인을 사용하면 워드프레스가 느린 가장 큰 원인을 해결할 수 있는 것이다.

하지만 여기에는 문제가 있다. 바로 댓글이다. 왜 댓글이 문제인지 설명하기 위해 잠깐 브라우저의 작동 방식을 설명해 보겠다. 브라우저가 어떤 웹페이지에 접속하면 그 사이트에서 파일을 전송받아 렌더링한 후 보여준다. 그런데 방문자가 그 페이지를 새로고침 한다고 해보자. 새로고침 할 때마다 같은 파일을 받아오는 것은 비효율적이다. 그래서 브라우저는 자체적으로 캐시를 하고, 새로고침 할 때는 변경되지 않은 파일은 전송받지 않는다. 워드프레스 캐시 플러그인들은 이 브라우저 캐시를 좀 더 효율적으로 이용한다. 전송하는 파일에 만료시간 설정을 해서 설정한 시간이 지나야 새로 파일을 다운받으라고 브라우저에게 알려주는 것이다. 만약 만료시간을 10분으로 설정했다면, 브라우저는 10분이 지나야 그 파일을 새로 내려받는다.

하지만 댓글을 달고, 댓글을 통해서 의견을 교환할 때는 이 브라우저 캐시가 문제가 된다. A라는 방문자가 어떤 글에 댓글을 달았다고 해보자. 그러면 그 페이지가 갱신되면서 댓글이 달린다. A가 댓글을 달았으므로 A는 갱신된 댓글을 바로 볼 수 있다. 하지만 A에 댓글에 B라는 방문자가 댓댓글을 달게 되면 어떨까? B가 댓댓글을 다는 순간 페이지가 갱신되면서 B에게 새로운 페이지를 보여주므로 B는 자신의 댓글을 바로 볼 수 있다. 하지만 A는 브라우저 캐시 설정에 따라 얼마간의 시간이 지나야 갱신된 페이지를 볼 수 있을 것이다. 이렇게 되면 블로그에 댓글로 대화를 나누는 것이 어려워진다.

그래서 캐시 플러그인들은 댓글을 다는 사람들을 그 블로그의 로그인 사용자와 동일하게 취급해서 아예 캐시된 페이지를 안 보도록 해 놓는다. 그러면 언제나 PHP를 통해 바로 생성된 HTML 페이지를 보게 되므로 댓글 문제가 완벽히 해결된다.

하지만 이렇게 되면 블로그에 한 번이라도 댓글을 달았던 사용자는 댓글을 단 이후로 캐시로 인한 속도 향상 효과를 전혀 받지 못하게 된다.2 즉, 간단하게 말하면 댓글을 한 번이라도 달았던 사용자에게는 블로그 로딩 속도가 현저히 느려진다는 말이다. 그리고 이건 대부분의 워드프레스 운영자가 바라지 않는 상황일 것이다.

이 문제를 해결하기 위해 여러가지 방법을 생각해봤다. 가장 쉬운 방법은 바로 외부 댓글 서비스를 사용하는 방법이다. 요즘 많이 쓰는 Disqus로 기존 워드프레스 자체 댓글을 대체하면 문제가 해결된다. 하지만 Disqus를 달면 페이지 로딩 속도가 꽤 느려진다. (HackYa님께서 댓글에서 언급하신 것처럼 비동기 방식으로 Disqus를 로딩하면 로딩 속도 저하는 거의 없어진다) 또한 워드프레스 내에서 댓글을 관리하지 못하고 Disqus에 접속해서 관리해야만 한다.

그래서 다른 방법을 찾아보다가 발견한 것이 바로 wpDiscuz플러그인이다. wpDiscuz 플러그인은 Disqus처럼 외부 댓글과 같은 방식으로 작동한다. 즉, AJAX를 이용해서 페이지가 로딩될 때 방문자의 브라우저에서 댓글 부분을 페이지에 추가하는 방식이다. 따라서 서버에서 만들어지는 캐시와 아무 상관 없다. 간단하게 말하면 캐시 플러그인과 상관 없이 댓글이 잘 보인다는 말이다. 그러면서 댓글은 내 DB에 저장된다. 물론 워드프레스 관리자 화면에서 관리할 수 있는 것은 물론이다. 워드프레스 자체 댓글을 사용할 때에 비해 블로그의 페이지당 전송량이 조금 늘어나기는 하지만, 내 블로그에 댓글을 달아주는 방문자들이 좀 더 쾌적하게 내 블로그를 볼 수 있게 하기 위해서 wpDiscuz 플러그인을 사용하는 것으로 결정했다.

2. wpDiscuz 플러그인으로 댓글 사용자도 캐시 페이지를 보여주기

2.1 wpDiscuz 플러그인 설치, 활성화 하기

  1. 워드프레스 대시보드에 들어가서 ‘플러그인 → 플러그인 추가하기’로 이동한다.
  2. 우상단의 ‘플러그인 검색칸’에 wpDiscuz를 입력하고 엔터를 친다.
  3. 검색결과에서 가장 처음에 나오는 ‘wpDiscuz – Supercharged native comments’ 플러그인을 ‘지금 설치하기’ 버튼을 눌러서 설치한다.
  4. ‘플러그인을 활성화’를 눌러서 플러그인을 활성화한다.

2.2 wpDiscuz 플러그인 메시지 한글화하기

‘댓글 → wpDiscuz ≫ Phrases’에 들어가면 wpDiscuz 댓글 메시지를 한글로 바꿀 수 있다.

wpDiscuz Front-end Phrases 설정
▲ wpDiscuz Front-end Phrases 설정

하지만 설정이 영어 기준으로 되어 있어서 한글로 바꿨을 때 좀 어색한 부분들도 있다. 그런 부분을 감안해서 알맞게 바꿔주면 될 것이다.

2.3 wpDiscuz 플러그인 추천 설정 몇가지

  • General Settings
    • Comment text size in pixels: 16px (한글은 14px가 좀 작게 느껴지므로 좀 크게 바꾼다)
    • Use WordPress Date/Time format: 체크 (날짜가 한글로 나온다)
  • Live Update
    • Live update options: Turn off “Live Update” function(웹호스팅에 부담이 될 수 있으므로 이 옵션을 선택한다)
    • Hide the CAPTCHA field for guests: 체크 (스팸이 많지 않다면 CAPTCHA를 비활성화 하는 것이 좋다. 다만 미리 Akismet을 활성화하는 것을 추천한다)

3. Calypso를 이용해서 워드프레스 블로그 관리하기

wpDiscuz플러그인을 사용하면 댓글을 달았던 방문자도 내 블로그에 방문할 때 좀 더 빠른 속도를 느낄 수 있게 된다. 하지만 지금 내가 사용하고 있는 웹호스팅이 많이 느려서 내가 로그인해서 블로그를 관리하는 것도 매우 느리게 느껴진다. 또 로그인한 상태에서는 캐시되지 않은 페이지를 보게 되므로 내 블로그에 있는 글을 읽을 때도 너무 느린 느낌이 든다. 그래서 가능하면 로그아웃한 상태에서 내 블로그에 들어가는데, 그러다가 블로그에 글을 쓴다거나 업데이트를 한다거나 하려면 다시 로그인해야 한다는 것이 불편했다.

그런데 얼마전 워드프레스에서 Calypso를 발표했다. Calypso는 웹상에서 또는 데스크탑 앱으로3 사용할 수 있다. Calypso를 이용하면 자신의 블로그에 직접 접속하지 않고, Calypso 상에서 통계 확인, 글쓰기, 플러그인 업데이트, 메뉴 수정, 테마 교체 등의 작업을 할 수 있다. 워드프레스 사이트를 여러 개 가지고 있다면 모든 사이트를 한 공간에서 관리할 수도 있다.

사용 방법은 간단하다. WordPress.com에 계정을 만든 후, 자신이 운영하고 있는 설치형 워드프레스에 Jetpack 플러그인을 설치한 후 활성화 한다. 그 다음에 Jetpack을 자신의 WordPress.com에 연동시킨 후, 설정에서 ‘Manage’ 모듈을 활성화하면 된다. 그러면 이제 WordPress.com에 접속하고 로그인한 후 좌상단의 ‘내 사이트’를 클릭하면 내가 등록한 워드프레스 사이트를 모두 관리할 수 있다.

Calypso의 글쓰기 화면
▲ Calypso의 글쓰기 화면

Calypso의 글쓰기 화면은 아주 심플하다. 좌측을 보면 ‘카테고리와 태그’를 설정, ‘특성 이미지’ 설정, ‘글형식’ 설정, 추가 옵션으로 ‘요약문’ 추가, ‘댓글·트랙백’ 설정만 가능하다는 것을 알 수 있다. 즉, 원래 워드프레스 관리자 화면에서와는 달리 플러그인에 의해 추가되는 옵션(SEO 옵션과 같은 것들)은 여기서 설정할 수 없다는 말이다. 우측의 에디터는 기존의 에디터와 별 다를 것이 없다. 하지만 TinyMCE Advanced와 같은 플러그인을 설치해서 사용하던 사람들은 기능이 좀 부족하다고 느낄 수도 있을 것이다.

단점만 말한 것 같지만 달리 말하면 위에서 말한 기능을 사용하지 않는 사람들에게는 Calypso의 글쓰기 환경에 큰 문제 없이 적응할 수 있다는 말이기도 하다. Calypso 환경에서 글쓰기가 가능해지면 이제 자신의 블로그에 특별히 로그인할 필요가 없어진다. 따라서 내 블로그에 접속할 때 더 빠른 로딩 속도를 경험할 수 있게 된다.

4. 맺으며

워드프레스 캐시를 최대한 활용해서 나도, 방문자도 내 블로그를 좀 더 빠르게 볼 수 있는 방법을 찾아봤다. 사실 좋은 서버에 적절한 세팅을 하면 이렇게까지 할 필요는 없다. 하지만 한국 웹호스팅 대부분이 영세한 편이고, 워드프레스에 최적화되어 있지도 않다.4 가상 서버나 실제 서버를 직접 운영한다면 워드프레스를 빠르게 할 수 있겠지만, 워드프레스로 작은 블로그를 운영하는 사람에게는 과하다.

그래서 어쩌면 편법 같은 방법으로 가능한 한 방문자가 속도를 빠르게 느낄 수 있도록 노력해봤다. 이 블로그에 접속해서 댓글을 남겼던 분들이 이 글을 본다면 이 블로그에 대한 쿠키를 삭제하고 접속하길 바란다. 기존에 댓글을 달았을 때 남겨진 쿠키 때문에 블로그가 느리게 느껴질 수 있기 때문이다.

나처럼 느린 웹호스팅 업체를 사용하는 분들에게 이 글이 도움이 되었으면 한다.


  1. 워드프레스가 느리다는 얘기가 많지만 서버의 성능이 괜찮고 서버 튜닝을 잘하면 충분히 빠른 속도를 보여줄 수도 있다. 문제는 그런 서비스를 제공하는 한국 업체가 없다는 것이다 
  2. 정확히 말하면 브라우저에 ‘comment_author’ 쿠키가 저장되어 있는 동안만이다. 브라우저에서 쿠키를 삭제하면 그 방문자가 댓글을 달았던 방문자인지 알 수 없게 되기 때문이다. 
  3. 현재 OSX, Windows, Linux에서 사용 가능하다. 
  4. 내가 지금 사용하고 있는 웹호스팅이 그 중에서도 느린 편이긴 하다. 물론 그만큼 싸다. 

이 글 공유하기:

댓글 남기기

9 댓글 / "워드프레스 캐시 최대한 활용하기"

댓글 이메일 구독
avatar
정렬:   최신순 | 오래된 순
HackYa
방문자

“하지만 Disqus를 달면 페이지 로딩 속도가 꽤 느려진다. 또한 워드프레스 내에서 댓글을 관리하지 못하고 Disqus에 접속해서 관리해야만 한다.”

Disqus API 를 한국에 처음 소개하고 localize 에 참여했던 사람 입장에서 이런글을 보면…. 슬퍼집니다. ㅠㅠㅠㅠ

Disqus 느리지 않습니다. Asynchronously 로딩하시면 되는거고, 일반 사용자라서 직접 API 를 가져다 ctrl+c,v 하시기 힘드시다면, Disqus 를 asynchronously 로딩해주거나/ 댓글을 달때/댓글을 읽을때 로딩되도록 해서 페이지 로딩속도에 영향을 주지 않는 플러그인 제품도 몇개나 존재합니다.

제 홈피 최근글에서 살짝 언급했지만, Disqus 는 SEO 에 많은 도움을 줍니다. (물론 kalkin 님의 관심분야가 아니시지만, 영리를 목적으로 사이트 운영하시는 분들에게는 큰 관심분야 입니다.)

제 사이트의 경우 Disqus 로 인해 추가발생하는 트래픽이 20% 넘습니다.

3줄 요약.

Disqus 는 느리지 않고, SEO 가 좋은 제품이다.
워드프레스도 느리지 않고, SEO 가 좋은 제품이다.
단지 사용법을 제대로 모를뿐이다.

sili96885
방문자
sili96885

그럼 워드프레스에서 disqus 플러그인을 설치 시, 어떻게 비동기로딩에 되게 설정할수있는건가요?
플러그인 자체 설정에 있을까요??
disqus가 느리다고해 아직 설치를 망설이고 있는 1인입니다 ㅎㅎ

열매맺는나무
방문자

덕분에 블로그에 잘 적용했습니다.
wp-Discuz 설정이 하도 세세해서 제대로 다 이용하려면 그것도 한참 공부해야 할 것 같아요. ^^

wpDiscuz