하늘빛 블로그

생각하라! 질러라! 삽질하라!

블로그를 웹호스팅으로 이전했습니다

그동안 블로그를 자체 구축한 서버에서 운영했습니다. 집에서는 NAS처럼 사용하면서 말이죠. 크게 불편한 점은 없었지만, 주소 끝에 “:8080″같은 포트 번호가 붙는 점주1이 불만이었습니다. 게다가 페이지를 로딩하는 시간이 너무 길었는데, 이게 ARM CPU의 연산능력 부족 때문인 것 같아서 웹호스팅 서비스로 이전하게 되었습니다.

그런데 웹호스팅으로 이전했는데도 불구하고 속도는 거의 개선되지 않았습니다. 그래서 구글링을 통해 원인과 해결 방법을 찾아보았습니다.

먼저 가장 많이 속도를 깎아먹고 있었던 것은 바로 플러그인이었습니다. 워드프레스는 활성화된 플러그인이 많을수록 로딩 타임이 길어지는 특성이 있었습니다. 그래서 P3(Plugin Performance profiler)라는 플러그인을 설치해서 각 플러그인이 로딩 시에 얼마나 시간을 소비하는지 살펴보았습니다. 시간을 많이 잡아먹는 플러그인은 하나하나가 1초 이상 잡아먹기도 했습니다. 그래서 시간을 많이 잡아먹는 플러그인 중에서 필수적인 것만 제외하고 전부 비활성화시켰습니다.

그리고 캐시 플러그인인 WP Super Cache를 적용하였습니다. 평소같으면 서버와 계속 통신하면서 PHP를 HTML파일로 변환해서 보여주는 과정을 거쳐야 하는데, 캐시 플러그인을 적용하면 이미 캐시된 HTML파일을 보여주기 때문에 시간을 많이 절약할 수 있습니다.

그리고 .htaccess파일을 수정해서 브라우저의 캐시의 만료 기간을 서버 측에서 지정해 주었습니다. 해당 기간 내에 블로그에 다시 방문할 경우엔 효과가 있습니다.

그리고 웹폰트 파일을 자신의 서버 내부에 두었습니다. 이전까지는 구글 웹폰트에 있는 폰트 하나랑 없는 폰트 하나씩을 적용했는데, 구글 웹폰트는 결국 외부 서버로부터 파일을 받아와야 하므로 그만큼 속도가 느려지는 측면이 있었습니다. 그래서 구글 웹폰트를 사용하지 않고 여기에 기존보다 더 용량이 작은 웹폰트를 적용하여 속도 향상을 꾀했습니다.

이럼에도 여전히 Google Pagespeed Insights에서는 외부에서 폰트를 받아오는 것으로 되어 있었습니다. 웹호스팅 계정에 SSH로 접속하여 grep 명령어로 해당 코드를 검색한 결과, 워드프레스이 include 디렉토리 안에 있는 어떤 PHP파일에서 해당 웹폰트를 불러오게 되어 있었습니다. 그래서 해당 구문을 주석처리했더니 Google Pagespeed Insights에서도 해당 문제가 거론되지 않고, 페이지 소스에서도 해당 구문이 보이지 않게 되었습니다.

 

이런 식으로 최적화한 결과입니다.

Screenshot_2015-02-01-15-21-41~01맨 처음에 테스트한 게 40점도 안 나왔던 걸 생각하면 꽤나 향상된 것입니다. 이 이상 성능을 향상시키려면 외부 서버의 자바스크립트를 불러와서 활용하는 걸 전부 막아버리고, 테마에서 압축기능을 활용해야 하는데, 이건 테마를 바꾸지 않는 한 불가능한 일인 것 같습니다.(이걸 바꾸는 건 테마를 손보는 수준을 넘어선 프로그래밍의 영역이니까요)

각주:

  1. 가정용 회선으로 운영하다보니 ISP의 정책에 따라서 특정 포트(21, 80 등)가 막혀 있었기 때문에 다른 포트로 운영해야 했습니다.

CC BY-NC 4.0 This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.

  • WishSKY

    80포트로 열 수 없더라도
    공유기랑 연결해서 80포트로 연결할 경우 8080포트랑 연결해주면
    되지 않나요? 그럼 평소에 접속하는 일반 웹서버 처럼 뜨게 됩니다.
    (오드로이드 XU 검색하다 왔습니다. 글 잘 보고 가요.)

    • ISP 차원에서 80포트로 집 컴퓨터에 접속하는 걸 막아놔서 그렇게 안 됩니다.
      공유기에서 무슨 짓을 하더라도 해결할 수 없었습니다.
      외부에서 포워딩을 해서 http://www.kingfisher.pe.kr에서 kingfisher.pe.kr:8080으로 포워딩해주는 게 고작이에요.
      8080 붙는 게 싫으면 아예 세부주소가 드러나지 않는 방식으로 포워딩하면 되지만, 그런 방식을 싫어해서 그냥 썼습니다.
      그리고 이제는 아예 웹호스팅 서비스로 옮겨서 그런 문제는 없어졌습니다.
      웹서버 안 돌려도 NAS와 미디어 서버 용도로 잘 써먹고 있어요.