워드프레스 사이트의 속도향상을 위해 최적화하는 방법
계정 제한 또는 비활성화
데이터베이스가 복잡 해지는 한 가지 큰 원인으로는 페이지나글을 수정 한 이후입니다. 기본적으로 워드프레스는 콘텐츠를 작업하는 동안 임시글 저장하기 버튼을 누를 때마다 무제한으로 수정본을 저장 합니다.
이러한 혼란을 방지하려면 리비전을 비활성화하거나 최소한으로 제한해야합니다.
무료 WP Revisions Control 플러그인으로 이 작업을 수행 할 수 있습니다 . 또는 사이트의 wp-config.php 파일에 다음의 코드 스니펫 중 하나를 추가 할 수 있습니다 .
제한 (2 개의 리비전 저장) :
define ( ‘WP_POST_REVISIONS’, 2);
비활성화 :
define ( ‘WP_POST_REVISIONS’, FALSE);
댓글 최적화
사이트에 댓글이 많이 달릴 경우 사이트 성능에 놀라운 영향을 미칠 수 있습니다. 기본적으로 모든 댓글은 Gravatar에 외부 HTTP 요청을 추가하여 사용자 이미지를로드합니다. 또한 댓글은 데이터베이스에 추가 부담을 주고 댓글을 로드하기위한 추가 데이터베이스 쿼리를 실행합니다.
댓글을 원하지 않을 경우 완전히 비활성화하는 것입니다.
- 설정 → 토론으로 이동
- 사람들이 댓글을 제출할 수 있도록하려면 체크 박스를 선택 취소합니다.

그러나 댓글 섹션은 많은 사이트에서 중요하므로 완전히 제거하고 싶지 않을 수 있습니다. 최적화를위한 몇 가지 팁은 다음과 같습니다.
- 무료 Lazy Load for Comments 플러그인을 사용하여 기본 WordPress 댓글 섹션의 로딩을 지연시킵니다 .
- HTTP 요청을 줄이기 위해 아바타 이미지를 비활성화합니다 ( 설정 → 토론 및 아바타 표시 선택 취소 ).
Disqus 또는 Facebook Comments 와 같은 타사 댓글 시스템 을 사용한 다음 무료 Disqus Conditional Load 또는 Lazy Social Comments 플러그인을 사용하여 로딩을 지연시킵니다 .
미디어 파일 오프로드
많은 미디어 파일 (예 : 이미지)을 사용하는 경우 서버가 이러한 모든 이미지를 저장하고 제공해야하므로 성능에 큰 부담이 될 수 있습니다.
이 변형을 줄이는 한 가지 방법은 CDN을 사용하는 것입니다. CDN은 서버에서 CDN 캐시로 이미지를 “풀링”한 다음 캐시에서 이미지를 제공합니다. 그러나 CDN은 처음에 해당 이미지를 가져 오기 위해 서버를 쿼리해야하기 때문에 여전히 리소스를 사용합니다.
이 문제를 해결하려면 미디어 파일을 Amazon S3 , DigitalOcean Spaces , Google Cloud Storage 등과 같은 외부 저장소로 이전하는 것을 고려할 수 있습니다. CDN은 계속 사용할 수 있지만 이제 CDN은 사이트의 서버 대신 클라우드 저장소에서 미디어 파일을 가져옵니다.
Delicious Brains 의 WP Offload Media 플러그인을 사용해서 설정할 수 있습니다 .
Gzip 압축 사용
Gzip은 서버 수준에서 데이터를 압축 할 수있는 기술로, 사이트의 파일 크기를 70 % 이상 줄일 수 있습니다.
대부분의 워드프레스 성능 플러그인은 WP Rocket을 포함하여 Gzip 압축을 활성화 할 수 있습니다. 또는 독립 실행 형 Enable Gzip Compression 플러그인을 사용할 수 있습니다 .
플러그인을 사용하지 않으려면 사이트의 .htaccess 파일에 다음 코드 스니펫을 추가하여 Gzip 압축을 활성화 할 수도 있습니다.
<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
# Remove browser bugs (only needed for ancient browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>
작동하는지 Gzip 압축 테스트 사이트에서 테스트할 수 있습니다 .
브라우저 캐싱 사용 (Cache-Control 및 Expires 헤더)
브라우징 캐싱을 사용하여 방문자의 로컬 컴퓨터에 정적 자산을 저장하도록 지시 할 수 있습니다. 후속 방문의 경우 방문자의 브라우저가 서버가 아닌 로컬 캐시에서 해당 파일을 로드하므로 로딩 시간이 단축됩니다.
브라우저 캐싱 동작을 제어하려면 두 가지 방법을 사용할 수 있습니다.
- 캐시 제어
- 헤더 만료
이를 통해 방문자의 브라우저에 특정 유형의 파일을 브라우저 캐시에 저장할 기간을 알릴 수 있습니다. 예 : “30일 동안 PNG 이미지 저장”.
둘 다 동일한 효과를 얻을수 있지만 캐시 제어가 더 새롭고 유연한 옵션입니다. 둘 다 사용할 수 있습니다. 스토리지 길이가 일치하는지 확인하기만 하면됩니다.
캐시 제어를 추가하거나 헤더를 만료하는 두 가지 방법이 있습니다.
- 플러그인
- 암호
많은 워드프레스 성능 플러그인에는 WP Rocket을 포함하여 브라우저 캐싱을 구현하는 기능이 이미 포함되어 있습니다. 또는 해당 기능만 하는 Add Expires Headers 플러그인을 사용할 수 있습니다 .
코드 작업에 익숙한 경우라면 서버에 SSH접속해서 .htaccess 파일 (Apache를 사용하는 경우) 또는 Nginx 구성 파일 (Nginx를 사용하는 경우)을 편집하여 설정할 수도 있습니다.
필요한 코드는 다음과 같습니다.
Apache cache-control (.htaccess):
<filesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|svg|js|css|swf)$">
Header set Cache-Control "max-age=84600, public"
</filesMatch>
Apache expires headers (.htaccess):
## START ADD EXPIRES HEADERS ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType image/svg "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType application/javascript "access 1 month"
ExpiresByType application/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>
## END ADD EXPIRES HEADERS ##
Nginx cache-control:
location ~* \.(js|css|png|jpg|jpeg|gif|svg|ico)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
Nginx expires headers:
location ~* \.(jpg|jpeg|gif|png|svg)$ {
expires 365d;
}
location ~* \.(pdf|css|html|js|swf)$ {
expires 2d;
}
헤더를 테스트하려면 이 무료 브라우저 캐싱 검사 도구를 사용할 수 있습니다 .
중요한 리소스에 사전 연결 및 미리 가져오기 사용
사전 연결 및 미리 가져오기는 타사 리소스에 대한 DNS 확인 시간을 단축하는 두 전술이며, 이를 통해 리소스 다운로드 시간을 단축 할 수 있습니다. 예를 들어 브라우저에 CDN 또는 Google Fonts CDN에 미리 연결하도록 지시 할 수 있습니다.
WP Rocket 의 이 게시물에서 더 많은 것을 배울 수 있습니다 .
사이트 전체 로드를 방지하기 위한 스크립트 관리
많은 워드프레스 플러그인은 특정 페이지에서만 플러그인을 사용하더라도 전체 사이트에 스크립트를 로드합니다. 이로 인해 해당 플러그인을 사용하지 않는 페이지에서 불필요한 성능 저하가 발생할 수 있습니다.
예를 들어 온라인 강의시스템을 위해 WooCommerce 를 사용하고 있다고 가정해 보겠습니다 . 사이트 전체가 온라인 강의시스템이 아님에도 불구하고 WooCommerce는 마치 전체 사이트가 상점인 것처럼 모든 페이지에 스크립트를로드합니다.
이 문제를 해결하려면 페이지 단위로 스크립트 사용을 조건부로 제어 할 수있는 플러그인을 사용할 수 있습니다. 두 가지 좋은 방법이 있습니다.
- Asset CleanUp: Page Speed Booster – 무료 (아래 그림 참조)
- Perfmatters – 유료
목표는 반드시 필요한 콘텐츠에서만 해당 스크립트를 로드하고 다른 곳에서는 비활성화하는 것입니다.
플러그인에서 자동로드된 데이터주의
일부 플러그인이 사이트 전체에서 스크립트를 로드하는 것과 마찬가지로 일부 플러그인도 wp_options 테이블의 자동로드 된 데이터를 통해 데이터베이스에서 유사한 방법을 사용 합니다. 더 나쁜것은 많은 플러그인이 삭제하더라도 데이터를 정리하지 않는다는 것입니다. 이로 인해 특히 오래된 사이트에서 데이터베이스 쿼리 시간이 느려질 수 있습니다.
이 가이드 를 확인하여 자동로드된 데이터를 지우는 방법을 알아볼 수 있습니다 .
타사 스크립트 사용 제한
타사 스크립트는 다음과 같은 항목입니다.
- 추적 스크립트 – Google Analytics , Hotjar 등
- 소셜 미디어 – Facebook Pixel, “좋아요”버튼 등
- 타사 광고 – Google 애드 센스, Media.net 등
- 일부 A / B 테스트 도구 – Google Optimize , VWO 등
- 기타.
타사 스크립트를 사용하면 최적화를 할 수 있는 권한이 훨씬 적습니다. 예를 들어 브라우저 캐싱 동작을 제어 할 수 없으며 각각의 타사 스크립트별로 추가 DNS 확인 시간이 필요합니다.
따라서 가능한 한 타사 스크립트 사용을 제한하는것이 좋습니다. 각 스크립트가 성능 저하를 정당화하기에 충분한 가치를 제공하는지 충분히 생각해볼 필요가 있습니다.
더 많은 제어를 위해 다음과 같은 일부 스크립트를 로컬로 호스팅하는 것도 고려할 수 있습니다.
- Google Analytics – CAOS 또는 WP Rocket 사용
- Facebook Pixel – WP Rocket 사용
속도 향상 플러그인 사용
앞서 언급 한 작업 중 일부는 WordPress 속도 플러그인을 사용하여 수행할 수 있습니다. 실제로 이러한 플러그인을 사용하면 미디어 또는 콘텐츠를 추가 할 때 워드프레스 사이트가 최적화 되도록하여 처음부터 문제가 발생하는 것을 방지 할 수 있습니다.
강력히 권장되는 플러그인은 WP Offload Media입니다. 이 플러그인을 적용하면 미디어를 Amazon S3 또는 DigitalOcean Spaces와 같은 클라우드 스토리지 로 오프로드 한 다음 CDN을 통해 번개처럼 빠르게 제공하여 워드프레스 사이트의 속도를 높일 수 있습니다 .
< 출처: How To Speed up WordPress: In-Depth Guide – Elemento Blog >
인뱅매니저
3월 11, 2021 at 9:22 오후(워드프레스 사용자 단톡방 홍*2님) 클라우드플레어에서도 최하단 js css 축약이나 cdn 을 함께 제공하니 참조바랍니다.