워드프레스는 PHP 어플리케이션 기반의 MYSQL(MARIADB)를 사용하는 CMS이며, 다양한 기능과 확장성을 포함하는 만큼 서버, 클라이언트에 부담일 수 있습니다. 서버에서 동적 데이터를 처리하여 클라이언트에게 정보를 전달하는 시간, 그리고 클라이언트 환경에서 데이터를 받아 처리하고 출력하는 시간을 최소화 하도록 노력해야 합니다. 이러한 부분들이 워드프레스로 만든 사이트 접근 속도에 영향을 줄 수 있고, 문제를 해결 할 수 있는 방법을 제시합니다.
페이지 캐싱 사용
워드프레스로 만든 사이트로 클라이언트가 접속하는 경우 서버내에서는 PHP가 동작을 하고 브라우저에 HTML 형식으로 페이지를 만들어지기 까지 많은 데이터를 조립하는 과정을 거치게 됩니다. 단일 페이지라 하더라도 위와 같은 과정을 매번 거치게되는 것은 서버에 부담을 줄 수밖에 없고, 접속한 클라이언트에서 최종 결과물을 접근하기까지 많은 시간이 소요되기도 합니다.
캐시 플러그인은 클라이언트에 전달하는 페이지를 서버내 HTML 형식으로 저장하여 위와 같은 과정을 일부 생략하게 되고 서버내 부담을 줄이고 응답 속도를 빠르게 합니다.
## wp-super-cache 캐시파일 생성의 예.
## wp-contents/cache/supercache 경로 하위에 html 포맷형식으로 생성
$ pwd
/home/hosting_users/USERID/www/wp-content/cache/supercache/USERID.cafe24.com
$ head index.html
<!DOCTYPE html>
<html lang="ko-KR">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
..............
대표적인 캐싱 플러그인은 다음과 같으며 기본적으로 무료버전을 제공하고 좀 더 많은 기능은 유료 버전을 통해 제공됩니다. 자세한 사용 방법은 URL을 통해 확인 하실 수 있습니다.
- WP Super Cache ( https://wordpress.org/plugins/wp-super-cache/ )
- WP Fastest Cache ( https://wordpress.org/plugins/wp-fastest-cache/ )
- WP Rocket ( https://elementor.com/blog/wp-rocket/ )
- W3 Total Cache ( https://wordpress.org/plugins/w3-total-cache/ )
wp-super-cache 플러그인 사용법 바로 가기
CDN (Contents delivery Network ) 서버 활용
외부 CDN 서버를 사용 하는 경우 다음과 같은 장점이 있습니다.
- 클라이언트의 전용망에서 응답이 빠른 미디어 서버에서 정적 데이터를 가져가므로 속도가 향상 됩니다
- 웹서버가 아닌 외부서버의 트래픽을 사용하여 클라이언트에 전송하므로 트래픽 부담을 줄일 수 있습니다.
- 접속자가 많아 지는경우 웹서버가 아닌 미디어서버에서 정적 데이터를 처리하므로 부하를 줄일 수 있습니다.
JPG, PNG, CSS, JAVASCRIPT, WOFF 등 정적 데이터를 CDN 서버에서 처리하도록 하여 위와같은 이점을 가져올 수 있고, wordpress.org 공식 홈페이지에서도 CDN 서비스를 제공하는 플러그인을 많이 찾아보실수 있습니다. 예로 대표적인 워드프레스 플러그인 jetpack에서도 간단한 설정만으로 javascript, css와 같은 정적 데이터를 캐시서버에서 로드하도록 처리 합니다.
- 플러그인 설정 페이지에서 사이트 가속기 활성화를 설정 합니다.
- 브라우저 개발자 도구에서 network 탭을 통해 javascript, css 자원 정보를 확인합니다.
- 웹서버가 아닌 c0.wp.com CDN 서버 자원을 사용함을 확인 할 수 있습니다.
- jetpack 사이트 가속화 기술문서에 주의 사항이 있으니 참고 바랍니다.
- CDN 서버에 한번 업로드된 미디어파일은 만료 시점을 가지지 않습니다. 한번 캐싱된 파일은 재생성되지 않습니다.
- 1의 이유로 사이트에서 갱신은 새로운 파일명으로 올리는 방법을 택해야만 합니다.
- 이미지파일은 80, 443포트로 제공되는 jpg, png, gif, webp 파일에 한합니다.
- 특정 pixel 이상의 이미지는 지원 하지 않습니다.
css, JavaScript 최적화
css, javascript 와 같은 정적 데이터에 대한 최적화 작업이 필요합니다.
해당 포맷의 파일에서 불필요한 줄바꿈, 블록 구분 기호, 공백을 없애므로써 파일 사이즈 및 트래픽을 줄일 수 있고 이는 속도 개선에 도움을 주게 됩니다. https://www.minifier.org 와 같은 온라인에서 툴로 작업을 하는 방법도 있으나 플러그인을 통해 간편하게 작업도 가능합니다.
Autoptimize 플러그인을 통해 관리자 패널에서 간단히 minify 작업이 가능합니다.
## js minify 파일 생성의 예
# pwd /USERID/www/wp-content/cache/autoptimize/js # head autoptimize_single_ed3b4417df0895e4cf8465d32b69adc6.js !function(){"use strict";if("object"==typeof window)if("IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype)"isIntersecting"in window.IntersectionObserverEntry.prototype||Object.defineProperty(window.IntersectionObserverEntry.prototype,"isIntersecting",{get:function(){return this.intersectionRatio>0}});else{var t=function(t){for(var e=window.document,o=i(e);o;)o=i(e=o.ownerDocument);return e}
DB 최적화
워드프레스의 여러 데이터가 쌓이다보면 DB에 불필요한 레코드가 생성되는 경우도 있고 wp_posts 테이블의 경우 REVISION 레코드가 누적되어 전체적인 속도에 영향을 주는 경우가 있습니다. DBMS QUERY에 대한 이해도가 있다면 직접 테이블 / 레코드 질의를 해보고 관리가 가능하지만 플러그인을 통해 간단한 클릭만으로 최적화 작업이 가능합니다. 대표적인 플러그인으로는 wp-optimize 와 wp-sweep이 있으며 무료 버전으로도 사용하는데 무리가 없습니다. 물론 DB최적화 작업 전에는 백업이 필수 입니다.
wp optimize 의 경우 DB 최적화 외에도 이미지파일 이나 css, javascript minify 등의 정적 데이터 최적화 기능도 제공합니다.