さくらインターネット レンタルサーバでのWordPressの高速化(非キャッシュプラグイン)

さくらのレンタルサーバで WordPress を運用していて、キャッシュ系のプラグインを使わずに高速化できないものか調べていたら、いくつか方法があったので試してみた。施策後、計測したところ、数値が向上し体感的にもブラウザでキビキビ描画されるようになったのでメモ。

[1] サーバにapcu設定(さくらのレンタルサーバでは効果なし…)
[2] サーバにgzip設定
[3] wordpress に defer 設定

計測サイト
https://gtmetrix.com/
https://developers.google.com/speed/pagespeed/insights/

[1] teraterm などで、さくらのサーバにログインする。APCu をサーバ上にインストールする。

% cd $home
% mkdir src
% cd src
% wget http://pecl.php.net/get/apcu-4.0.8.tgz
% tar zxvf apcu-4.0.8.tgz
% cd apcu-4.0.8
% phpize
% ./configure
% gmake

さくらのコントロールパネルで設定する。
コントロールパネルにログインし、PHP設定の編集欄に以下を追記

extension_dir=/home/username/src/apcu-4.0.8/modules/
extension=apcu.so

確認は phpinfo() を設置するなど。
ただし、計測の結果、変化なし。どうもさくらのレンタルサーバの仕組み上、この施策は効果がないようだ。

[2]サーバからクライアントに対してレスポンスするリソースを圧縮する。

WordPress ディレクトリ直下の .htaccess に設定を追記する

$ vi .htaccess

# END WordPress の下の方に

# 2015-MM-DD、HTTP転送圧縮のために下記を追加

 SetOutputFilter DEFLATE

 # Mozilla4系などの古いブラウザで無効、しかしMSIEは除外
 BrowserMatch ^Mozilla/4\.0[678] no-gzip
 BrowserMatch ^Mozilla/4 gzip-only-text/html
 BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

 # gifやjpgなど圧縮済みのコンテンツは再圧縮しない
 SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary
 SetEnvIfNoCase Request_URI _\.utxt$ no-gzip

 # htmlやcssなどは圧縮
 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
ExpiresByType text/css "access plus 10 days"
ExpiresByType image/gif "access plus 10 days"
ExpiresByType image/jpg "access plus 10 days"
ExpiresByType image/jpeg "access plus 10 days"
ExpiresByType image/png "access plus 10 days"
ExpiresByType application/x-javascript "access plus 10 days"

計測の結果、これは効果あり。体感でも早くなった。

[3] WordPress のヘッダー部分や、wp_head() 関数あたりで読み込まれる js ファイルに全て defer 後読み込み設定にする。

$ vi /home/username/www/WP_DIR/wp-content/themes/theme_xxx/functions.php
/* 2015/MM/DD add */
if (!(is_admin() )) {
	function add_defer_to_enqueue_script( $url ) {
		if ( FALSE === strpos( $url, '.js' ) ) return $url;
		if ( strpos( $url, 'jquery.min.js' ) ) return $url;
		return "$url' defer charset='UTF-8";
	}
	add_filter( 'clean_url', 'add_defer_to_enqueue_script', 11, 1 );
}

※要参照 https://wpdocs.osdn.jp/関数リファレンス/add_filter

計測の結果、これも多少効果あり。

参考URL
http://inside.pixiv.net/entry/2014/02/27/002433
http://d.hatena.ne.jp/replication/20110327/1301218321

【サイト表示高速化】.htaccessでブラウザのキャッシュを有効化する

スクロールせずに見えるコンテンツのレンダリングをブロックしている javascript/css を排除するWordPressプラグイン3つ


先人の皆様に感謝