WordPress高速化: SPDYの利用

高速化

前回はJS & CSS Script Optimizerというプラグインを使ってWordPressを高速化する方法を紹介しました。

今回はプラグインではなくSPDYという機能(プロトコル)を使ってWordPressを高速化することに挑戦してみます。このブログではサーバにnginxを使っているのでnginxを使っている場合のSPDYについて紹介します。

SPDYとは

SPDY(スピーディーと呼びます)とは次世代のWeb向け通信プロトコルです。現在利用されているHTTPの後継といわれています。

HTTPの代わりにSPDYを使うことによってWebサイトの読み込みが高速化することが期待できます。したがってWordPressでもSPDYによって高速化する可能性があります。

WebサイトをSPDYに対応させるためにコンテンツを変更する必要は一切ありません。やるべきことはWordPressを動かしているWebサーバをSPDY対応にすることだけです。

リスクが非常に少ないため、Webサーバの設定を変更できるのならばぜひSPDY対応にしておきたいところです。

ただし、一つだけ制限があります。SPDYは現在のところHTTPSと組み合わせて使うことしかできません。つまり「http://~」で始まるサイトにはSPDYは適用できないのです。

このブログの場合もHTTPSを使っていないのでSPDYを適用することはできません。しかし、このブログは管理画面はHTTPSにしているので、SPDYによって管理画面の高速化を狙うことにしました。

ngixnの確認

WebサーバがSPDY対応になっていなければSPDYは当然使えません。nginxの場合はhttp_spdy_moduleというモジュールが組み込まれていなければいけません。

「-V」を付けてnginxを実行したときの出力に「–with-http_spdy_module」があることを確認しましょう。

/usr/sbin/nginx -V
nginx version: nginx/1.6.0
built by gcc 4.7.2 (Debian 4.7.2-5)
TLS SNI support enabled
configure arguments: 
--with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' 
--with-ld-opt=-Wl,-z,relro 
--prefix=/usr/share/nginx 
--conf-path=/etc/nginx/nginx.conf 
--http-log-path=/var/log/nginx/access.log 
--error-log-path=/var/log/nginx/error.log 
--lock-path=/var/lock/nginx.lock 
--pid-path=/run/nginx.pid 
--http-client-body-temp-path=/var/lib/nginx/body 
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi 
--http-proxy-temp-path=/var/lib/nginx/proxy 
--http-scgi-temp-path=/var/lib/nginx/scgi 
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi 
--with-debug 
--with-pcre-jit 
--with-ipv6 
--with-http_ssl_module 
--with-http_stub_status_module 
--with-http_realip_module 
--with-http_auth_request_module 
--with-file-aio 
--with-http_spdy_module
--with-http_addition_module 
--with-http_dav_module 
--with-http_geoip_module 
--with-http_gzip_static_module 
--with-http_image_filter_module 
--with-http_secure_link_module 
--with-http_sub_module 
--with-http_xslt_module 
--with-mail 
--with-mail_ssl_module 
--add-module=/usr/src/nginx/source/nginx-1.6.0/debian/modules/nginx-auth-pam 
--add-module=/usr/src/nginx/source/nginx-1.6.0/debian/modules/nginx-dav-ext-module 
--add-module=/usr/src/nginx/source/nginx-1.6.0/debian/modules/nginx-echo 
--add-module=/usr/src/nginx/source/nginx-1.6.0/debian/modules/nginx-upstream-fair 
--add-module=/usr/src/nginx/source/nginx-1.6.0/debian/modules/nginx-syslog 
--add-module=/usr/src/nginx/source/nginx-1.6.0/debian/modules/nginx-cache-purge 
--add-module=/usr/src/nginx/source/nginx-1.6.0/debian/modules/ngx_http_pinba_module 
--add-module=/usr/src/nginx/source/nginx-1.6.0/debian/modules/ngx_http_substitutions_filter_module 
--add-module=/usr/src/nginx/source/nginx-1.6.0/debian/modules/nginx-x-rid-header 
--with-ld-opt=-lossp-uuid

(出力がとても長いので改行してます)

nginxのSPDYの設定

nginxがSPDY対応であることを確認したら、SSLを使っているサイトの設定ファイルでSPDYを使用するように記載します。

具体的にはnginxの各サイトの設定(/etc/nginx/sites-availabeにあるファイル)で、listen 443の行に「ssl」と「spdy」を追記します(「ssl」はもとからあるはずです)。

server {
listen 443 ssl spdy;
(以下省略)

これだけでspdy対応になります。

SPDYの確認

本当にSPDYで通信しているかどうか確認してみましょう。

SPDYはプロトコル部分の改善で、ユーザの見た目には差がわかりません。そこでchromeブラウザに拡張機能「SPDY indicator」を導入します。Chromeウェブストアで「SPDY」で検索するとすぐに見つけられるはずです。

SPDY indicator

この拡張機能が有効になった状態でSPDY対応にしたサイトにアクセスしてみます。するとアドレスバーのところに稲妻型のアイコンが表示されるはずです。これがSPDY対応になっている証拠です。なおアイコンの中の数値はSPDYのバージョンを表しています。

SPDY indicatorの表示

(「https」に打ち消し線がついているのはオレオレ証明書を使ったSSLのためです)

SPDYの効果

さて問題はSPDYを使うことでどれくらい効果があるか、ということです。

私はHTTPSを使っているのは管理画面だけなので、Pingdomのようなツールで測定するわけにもいきません。

実際に使った感想というレベルでは、確かに早くなった・・・かも!?という感じです。WordPressのダッシュボードを開いたときに表示完了するタイミングがワンテンポ速くなった気がします。

まとめ

今回はWebサーバのSPDY機能を有効にしてHTTPSを使っているWordPressの画面の高速化を行いました。

私の場合はHTTPSを使っているのは管理画面だけなので、恩恵を受けるのは私だけなのですが、よく使う画面でもあります。効果としては劇的というほどではありませんが、感覚的には高速化しておりますし、何よりnginxの設定ファイルにたった4文字付け加えるだけというお手軽さです。SPDY対応はぜひしておくことをお勧めします。

次回は久々にプリペイドSIM関連で、ドコモメールについて紹介したいと思います。