さくらインターネット レンタルサーバでの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://d.hatena.ne.jp/replication/20110327/1301218321

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

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


先人の皆様に感謝

CentOS 7 にて php の msgpack をテストしたい

インストール

# yum install php-pear

# pecl install msgpack
Failed to download pecl/msgpack within preferred state “stable”, latest release is version 0.5.5, stability “beta”, use “channel://pecl.php.net/msgpack-0.5.5” to install

ベータ版を入れろと…
# pecl install msgpack-beta

入った。

PSI labs さんがシリアライズとの速度差をあげていたので自分のローカル環境でテスト。平均は取っていない。

Serialize

$ php serialize_test.php
size         :1588901
packed time  :0.023352861404419
unpacked time:0.02482008934021

MessagePack

$ php msgpack_test.php
size         :200005
packed time  :0.0028069019317627
unpacked time:0.019173145294189

シリアライズ速度は段違い。

アンシリアライズはだいたい同じ。

サイズがだいたい10分の1になる。

さくらのレンタルサーバに vim をインストール

さくらのレンタルサーバは vi が utf8 を正常に表示しないが、vimを入れれば解決

■ vim のインストール

% mkdir -p ~/local/src
% cd ~/local/src
% wget ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2
% bunzip2 vim-7.4.tar.bz2
% tar xvzf vim-7.4.tar
% cd vim74
% ./configure –enable-multibyte –enable-xim –enable-fontset –with-features=big –prefix=$HOME/local
% make
% make install

■ vim を cshrc に追記

% vi ~/.cshrc
——————————————————–
alias vi vim
set path = ($HOME/local/bin /sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin /usr/X11R6/bin $HOME/bin) # $HOME/local/binを追記
——————————————————–
% source ~/.cshrc # cshrc を読み直し

■ vimrc を作成

% vi ~/.vimrc
——————————————————–
set fileencoding=utf-8
set encoding=utf-8
set fileencodings=iso-2022-jp,utf-8,euc-jp,ucs-2le,ucs-2,cp932
——————————————————–

Windows 7 で、Apache + php + mysql + memcache する。

Windows 7 で、Apache + php + mysql + memcache する。

apache http://httpd.apache.org/download.cgi
mysql http://www-jp.mysql.com/downloads/
php http://www.php.net/downloads.php
memcache http://code.jellycan.com/memcached/

1. ダウンロードしたwin32 binary: memcached-1.2.6-win32-bin.zip をC:\直下などに展開
2. コマンドプロンプトを右クリックして「管理者として実行」して起動させる。

C:\> cd ../../
C:\> cd memcached-1.2.6
C:\memcache-1.2.4> memcached.exe -d install
C:\memcache-1.2.4> memcached.exe -d start
C:\memcache-1.2.4> memcached.exe -d stop
C:\memcache-1.2.4> memcached.exe -d uninstall
C:\memcache-1.2.4> netstat -an

http://downloads.php.net/pierre/からダウンロードしたphp_memcache-2.2.6-5.3-vc9-x86.zipを解凍し、php_memcache.dllをPHPをインストールしたフォルダのextフォルダに放り込む。
php.iniに
—————–
[PHP_MEMCACHE]
extension=php_memcache.dll
—————–
を追記。
Apache再起動。
mem_test.php に
—————–
connect(‘localhost’, 11211);
if(! $cache->get($key))
{
$cache->set($key, date(‘Y-m-d h:i:s’), MEMCACHE_COMPRESSED, 10);
}
echo $cache->get($key).”\n”;
echo “OK!”.”\n”;
?>
—————–