渡米生活。(日記)

渡米生活。本家から切り離しました。あまり渡米生活に関係のないプログラムネタや音楽ネタなど。

xrea、coreserverでwordpressの表示速度を上げる

以前から、xreacoreserverで公開しているwordpressサイトがやたら重くて、本日ついに高速化プラグインを入れることを決意しました。

で、例によって、セーフモードで上手く動かないものが頻発する中、色々トライしてみた結果です。

お約束のセーフモード対策

もともと、xrea/coreserverwordpressを使っている人は、.htaccessでいくつかのphpcgiモードで動かすよう設定しているはずですが、一応念のため。

wp-admin/.htaccessに以下の記述があるか確認。プラグイン周りで足りないものがあれば足しておく。

# ファイルのアップロード
<files async-upload.php>
AddHandler application/x-httpd-phpcgi .php
</Files>

#プラグインとテーマの管理パネル
<Files update.php>
AddHandler application/x-httpd-phpcgi .php
</Files>

# wordpress本体のアップデート
<Files update-core.php>
AddHandler application/x-httpd-phpcgi .php
</Files>

# blog管理
<files admin.php>
AddHandler application/x-httpd-phpcgi .php
</files>

# プラグイン管理
<files plugins.php>
AddHandler application/x-httpd-phpcgi .php
</files>


#プラグインの自動インストール
<files plugin-install.php>
AddHandler application/x-httpd-phpcgi .php
</files>

xrea

まず、xreawordpress、というのがそもそもかなり無茶になってきたのかも、と先に断りつつ……(笑)

実は、xreaでは、別にMovable Typeで運用しているサイトがありまして、そちらは勿論静的html書き出しなので、見る分には殆どストレスはありません。
…が、wordpressのサイトの方は、テーマもほとんどtwentytwelveそのまんまなのに、めちゃくちゃ重い。トップページ表示に10秒以上かかります。

なので、最初は、完全に静的htmlを作ってくれるプラグインを探したんですが、やっぱりセーフモードがひっかかってうまく動かない。
有名なWP Super Cacheなんか、キャッシュディレクトリの下に何やっても消せないディレクトリを作ってくれちゃって(ユーザーapache、グループapacheの持ち物で、それ以外のユーザに書き込みOKが出ているにもかかわらず、消せない…正直何がおきているのかさっぱり)もうこのディレクトリはアカウント閉じるまでゴミ箱ディレクトリに入れとくしかない、って感じです。

あとで紹介するWP Fast Cacheはものすごく私好みにシンプルなんですが、コメントがついたときに自動で静的htmlを作り直すのをやってくれないので、ブログには不向き。

というわけで、キャッシュ系を検討。
すると、評判が良いのはQuick Cacheなのだけど、これはphpが5.3以上でないと動かない。xreaのモジュール版phpは5.2.5なんですね…(涙)
cgiモードなら5.3が提供されているので、それで動かそうと思いつく限りのphpファイルを5.3で動かすよう指定してみたが、やっぱりダメ。

というわけで、結局、以下の組み合わせになりました。

  1. APC Object Cache Backend + Tribe Object Cache
  2. MO Cache
  3. Hyper Cache

Hyper Cacheは、インストール後に、wp-config.phpに以下の行を足す必要があります。

/**
 * for Hyper Cache plugin
 */
define('WP_CACHE', true);

しかし、それ以外はデフォルト設定で大丈夫です。

このほか、流行のCDNで、CroudFlareとかも試してみたんですが、最初は速いように見えたものの、時間をおいて接続してみるとかえって遅くなったりすることもあって、結局断念。(まあ、タダでやろうと思えば皆どこも同じようなものになるわな…)
ただ、CDNはサーバーが落ちたときにもキャッシュでwebを表示してくれるので、そのうちまた時期をみて検討してみようと思います。

ちなみに、速度調査したのはここでした。
http://tools.pingdom.com/fpt/

この手の速度調査でよく目にする話ですが、これで良い数値が出ても、体感速度はあまり変わらないこともあったりするので、あまりこれでチューニングを繰り返すのではなく、あくまでブラウザでアクセスしてみて、体感速度が早くなっているかどうかで決めるのが良いと思います。

で、どのくらい早くなったか、というと、、、
実際のところ、今迄は「サイトおちてるの?」ってくらい遅かったのが、「オッソーイ!」ってくらいになりました(笑)。以下のサイトです。

http://garden-of-ethel.me.uk

…というわけで、wordpresssサイトはそのうちxreaから引っ越すことになると思います。
coreserverの方を引っ越すつもりでとったvalueserverのアカウントにミラーを置いて、速度を比べてみるつもりです(valueserverならセーフモード外れてるから、WP Super Cacheが試せるし)。

coreserver

coreserverのcore-Aを使っているんですが、さすがにxreaほど遅くはありません。
なので、上の対策を講じても、あまり早くなりませんでした。
プラグインの数がかなり多いのと、jQueryでスライダーやったり色々してるからかも)

しかし、こちらのサイトはブログサイトではなく、コメント欄は皆無なので、静的html書き出しが使えます!

勿論、静的html書き出しをやってくれるプラグインは沢山あるんですが……
もう、ファンシーなことは何もやらなくていい! とにかく見たままのhtmlを吐いてくれ!という方におすすめなのが、WP Fast Cacheです。

これは、文字通り、記事(ページ)を書いて、公開して見栄えを確認して、これでヨシ、と思ったら、記事編集画面のタイトルの下にある「Add Page To WP Fast Cache」ボタンを押すだけ。

これを押すと、こうなります。

昔の記事を修正したので、それを反映させたい、というときは、「Refresh Page Cache」ボタンを押せばいい、というわけです。

また、このプラグインは、ページ(投稿)単位でキャッシュするかどうかを決められます。
このページはダイナミック出力ページを見せて欲しい、と思ったら、最初から「Add Page To WP Fast Cache」ボタンを押さずにおくか、「Remove Page From WP Fast Cache」ボタンを押してリストから外します。

また、今迄に書いた記事をまとめてキャッシュする場合は、プラグインの設定から出来ます。
この設定窓がまた超簡単。

青いボタン左から、「キャッシュを全部消す」「キャッシュを全部作り直す」「最近の25ページをキャッシュする」「最近の投稿25件をキャッシュする」「カテゴリーページを全部キャッシュする」
その下が、「指定URLをキャッシュする」

です。つまり、過去の記事全部をキャッシュする場合、大体記事の数が500程度、と思ったら、25と数字が入っているところを適当に1000とか入力してボタンを押せばいい、という仕組みです。

なにしろ、圧縮だの何だのと面倒なことをしないから、キャッシュを作るのもかなり速い。負荷制限があるホストマシンでは、この軽さは有り難いです。

とにかくシンプルな作りなので、自動でキャッシュを作ってくれたり、時間がきたらキャッシュを作り直したり……みたいなことは一切やりません。
全部手動。
Movable Typeを使ったことがある人なら、かなり「再構築」に近いイメージです。
(…といっても、最近のMTはよく知らんのだけど)

ちなみに、管理ログインした状態でページにアクセスした場合には、キャッシュファイルではなく、wpが吐くダイナミック出力のページが表示されます。
プラグインをインストールしたブラウザでトップページの再読み込みをして、「全然速くなってないじゃん!」とキレないように(笑)。
一度ログアウトして表示しなおすか、別のブラウザで確認してみて下さい。

静的htmlが表示されているかどうかの判別は、pluginsディレクトリ以下に出来ているキャッシュhtmlに試しに手を加えて表示してみれば分かります。
もっとファンシーなプラグインなら、「これはキャッシュです」みたいなコメント行を突っ込んでくれるものもあるんですが、、いや、シンプル・イズ・ベストで(笑)

で、どのくらい速くなったかというと、、、、

これは、もう、目に見えて速くなりました。
わざわざ測定サイトに行くまでもないです。「そういえば、昔、webってこのくらいの速度で見えるのが当たり前だったわ〜」と思い出させてくれる速度です(笑)

以下がそのページ。
http://www.hoshina-music.com/home

ただ、色々つめこんでいるトップページはまだちょっと重いので、あとはcssのゴミを掃除してデータ量を減らすとか、javascriptを整理するとか、地道な作業で軽量化をはかろうと思います。

…ってか、これ、wordpressの標準機能にしてよ、って感じ……。
ダイナミック・パブリッシングが売りなのはわかるけど、やっぱり静的htmlは軽いよ!
(だからといってMTに戻る気はさらさらないのであった。自前関数が使えない世界には最早戻れない……)