WordPress超高速化ノウハウ:2.gzip圧縮とブラウザキャッシュ

前回からの続きです。

高速化のための対応項目

・HTTPリクエスト減らせ
gzip圧縮しろ
ブラウザキャッシュ使え
・画像サイズ削減しろ
・HTML/CSS/JSを縮小化しろ
・CSS/JSの読み込み順序を最適化しろ

今回はgzip圧縮とブラウザキャッシュについてです。

gzip圧縮は対応項目の中でもトップクラスに効果があり、これだけで転送量が40~50%は余裕で削減されます。ただしサイトの形式やサーバの設定によっては利用できない場合もあります。

WordPressへの適用方法

WordPress用の.htaccessを開き下記のように記述します。

AddType image/x-icon .ico

SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI _\.utxt$ no-gzip
#DeflateCompressionLevel 4
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php

ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType text/html "access plus 1 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType image/x-icon "access plus 2592000 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 216000 seconds"
ExpiresByType application/x-javascript "access plus 216000 seconds"
ExpiresByType application/x-shockwave-flash "access plus 216000 seconds"

FileETag none

<FilesMatch "^(wp-config\.php|wp-mail\.php|install\.php|\.ht)">
order allow,deny
deny from all

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !\.(html?|xml|xsl|js|css|jpe?g|png|gif|ico)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

参考:http://dogmap.jp/2010/04/20/wordpress-htaccess/

「# BEGIN WordPress」~「# END WordPress」より上の記述はWordpressに関係ないhtaccessの記述のため、どのようなサイトでも利用可能です。

gzipキャッシュを行い、ブラウザキャッシュの制御も行われているため、この記述を加えるだけで劇的に速度改善する可能性が高くあります。

注意点

性質上キャッシュが強烈に残りやすくなるため、更新頻度の高いサイトの場合は更新前の古い内容がユーザに見えやすくなることがあります。WordPressをカスタマイズしてユーザー参加型のサービスなどにしている場合は特に不向きです。

キャッシュ時間を短くして瞬間同時アクセスのみキャッシュを有効にすることも可能ですが、表示スピードを早くするというよりサーバの負荷を避ける方向の処理に変わり高速化の効果は若干薄れますので、動的なサイトはまた違った対策が必要になります。

次回に続きます。