はじめに
WordPressを10倍から1000倍 速くできるかもしれないプラグインを作ったので紹介します!普通1000倍とか聞くと「うそだろーー!」とツッコミを入れられてもしかたないのですが、実際に、そのぐらい、もしくはそれ以上の結果が出ているので、あながち嘘でもないと思います。信じられない人は、騙されたと思って、一度インストールしてみてください。インストール・アンインストールともに、めちゃくちゃ簡単ですので。
初回リリースは英語版です。(日本語ローカライズ版作りました!!) そもそも、このプラグインを作ったきっかけは、Redisを使ってWordpressを超高速化するという手法を知って、実際に試したら、びっくりするほど速くなったので、本人的には満足していたのですが、この高速化手法を利用するにはRedisというインメモリーデーターベースを利用できる必要がありまして・・・。自分でサーバーまるごと、運用している場合であれば、Redisを使った手法を用いるのがベストだと思うのですが、Wordpressホスティングサービスを提供しているような業者のサイトではRedisを使うことが出来ないだろうなと思い当たりまして、じゃぁ Redisに依存しない高速化版を作っちゃおうというのが開発の動機です。動作環境はWordpressが動いている、つまりPHPが動いている環境さえあれば、Pearのライブラリーであるとか、Redis、その他のサービス等 一切依存しないプラグインですので、どんな環境でも動くはずです。
Redisを使った高速化手法については、こちらの記事を参照ください。
インストールについては、現在 WordPress.orgさんでPlugin審査中ですので、本サイトからダンロードして利用してください。(その方法も後述します。)
プラグインの機能
ページキャッシング
このプラグインを導入した後は、Wordpressを公開しているサーバーの有効なURLへアクセスがあると、そのURLへのリクエストが初めてであるかどうか(キャッシュが在るかないか)を判定して、キャッシュがなければ、Wordpressへ処理(Request)を転送し、通常通りWordpressにページ生成してもらい、アクセスしてきたブラウザー(人)へページを返します。と、同時にこっそりキャッシュファイルをサーバー上に作っちゃいます。次に同じURLにリクエストがあった場合には、Wordpressを一切介さずに、キャッシュファイルを即返します。(この処理がめっちゃ速い!)
キャッシュ全クリア
プラグインの管理画面から、既にキャッシュされているファイルを全部クリアしちゃう機能です。どのような用途に用いるかというと、ページキャッシュをしちゃうと、サイドバーなどに配置されているランキング表示であるとか、最近の投稿一覧が更新されないケースがあります。(キャッシュがかかっていてもリフレッシュされるかどうかは、利用しているプラグインに依存します。)
ランキングぐらい、多少古くても構わないのですが、新しく投稿を追加した場合などは、どのページにアクセスしてくれた人にも、そのことを通知できる方が良いので、一旦キャッシュを全部消しちゃおうという時に使います。
キャッシュ再構築
プラグインの管理画面から、投稿(Post)に対するキャッシュを再構築する機能です。
どんな時に使うかというと、キャッシュを一旦全クリアしちゃった後、ブラウザーでどのページヘアクセスしても、速度が極端に落ちます。その理由はキャッシュファイルがないから、通常通りWordpressさんにページ作成を依頼しているためです。第一印象って大事です。せっかくGoogle検索で引っ掛けてもらって、自分のサイトへ引き込んだはいいが、いつまで立ってもページが表示されない(かなり遅いという意味)では、イメージダウンです。なので、キャッシュを全部クリアしちゃった後は、公開ポストに対して1度ずつアクセスしちゃえば、キャッシュが再構築されるということになります。でも、公開ページがうん百ページある場合、手作業でブラウザーでアクセスする作業は気が遠くなります。ですので、この作業をボタンワンクリックで済ませちゃおう!というのがこの機能です。
インストール
WORDPRESS_ROOT >> をWordpressのルートディレクトリーと読み替えてください。
手作業によるインストール
- WordPressの管理画面から、新規プラグインのインストールを選択し、「Text Cache Controller」で検索してインストールしてください。といいつつ、これが可能になるのは WordPressさんのプラグイン申請を通過した後になりますので、あと1〜2週間はかかっちゃうと思います。それまでの間は、後述するDownload URLよりZipファイル(text-cache-controller-latest.zip) をダウンロードして、プラグイン管理画面の新規追加画面で、アップロードを選んで、本プラグインをインストールしてください。
- プラグイン管理画面で、「有効化」してください。これでダッシュボードの「設定」の中に本プラグイン「Text Cache Controller」を選択できるようになります。
- WordPressのルートフォルダにある index.phpファイルをコピーして、名前をoriginal_index.php とします。
- 本プラグインフォルダにある index-textcache.php というファイルを WORDPRESSのルートフォルダに index.php という名前でコピーします。(上書き)
以上です。簡単でしょ。
コピーの部分も自動化しても良かったのですが、権限の関係とかでトラブっても困りますし、内部で何が行われているか理解できないと、使ってくださる方も不安かもなと思って、この部分は手作業で行ってください。
コマンドラインでインストールする方法
プラグインのインストール自体は、上記の方法で行ってください。
インストール後、ファイルをコピーする部分をコマンドでやるとこんな感じですよというのを示しておきます。
[bash]
$ cd WORDPRESS_ROOT
$ cp index.php original_index.php
$ cp wp-content/plugins/text-cache-controller/index-textcache.php index.php
[/bash]
ダウンロード
text-cache-controller-latest2.zip
スクリーンショット
プラグイン管理画面 on WordPress
設定項目はわずか2つだけで、非常にシンプルです。
1つは、コントローラ名。これはセキュリティを考慮してキャッシュするフォルダ名を変更するための設定です。
もう1つは、動作モード。出力されるログを簡易なものにするか、詳細なものにするかの設定です。トラブルが起こった時などは詳細モードにして、ログを閲覧すると原因がわかるかもしれません。もしくはこのページの投稿欄にでも、ログの内容を貼り付けていただければ、何らかのアドバイスが可能となります。
あとは、キャッシュを全てクリアするためのボタン。キャッシュを再構築するためのボタンがあります。
その他、インストールの完了ステータス。(上記のindex.phpのコピーがちゃんとできているかどうかなどをチェックし、その結果を表示します。)、簡易なインストールマニュアルが表示されます。

パフォーマンスの改善度合い(実際に運用している環境のもの)
本プラグインが出力したログファイルのスナップショットです。
1000倍ぐらい速くなってるでしょ?

これは、たった今、運用しているサイトから引っこ抜いたログです。
運用サーバーが非力であるということはしょっぴいても、10秒オーバーとかありえないっすよね。Wordpressさん。
キャッシュが効いてたら、0.001秒 ぐらいですからね。何倍ですかね・・・
[bash]
2014-03-31 18:54:12 TotalTime : 0.00097 This response is using CACHE!!
2014-03-31 18:54:23 TotalTime : 0.00073 This response is using CACHE!!
2014-03-31 18:54:55 TotalTime : 0.00099 This response is using CACHE!!
2014-03-31 18:54:56 TotalTime : 0.001 This response is using CACHE!!
2014-03-31 18:57:37 TotalTime : 0.0012 This response is using CACHE!!
2014-03-31 19:02:44 TotalTime : 0.00156 This response is using CACHE!!
2014-03-31 19:02:56 TotalTime : 10.77431 This request is Forward to WordPress(with Creating CACHE)
2014-03-31 19:05:04 TotalTime : 0.00104 This response is using CACHE!!
2014-03-31 19:06:01 TotalTime : 1.80017 This request is Forward to WordPress(with Creating CACHE)
2014-03-31 19:07:04 TotalTime : 2.94627 This request is Forward to WordPress(with Creating CACHE)
2014-03-31 19:07:12 TotalTime : 0.00092 This response is using CACHE!!
2014-03-31 19:08:05 TotalTime : 0.00102 This response is using CACHE!!
2014-03-31 19:10:12 TotalTime : 0.0007 This response is using CACHE!!
2014-03-31 19:11:22 TotalTime : 0.00086 This response is using CACHE!!
2014-03-31 19:11:23 TotalTime : 0.00138 This response is using CACHE!!
2014-03-31 19:11:29 TotalTime : 0.00105 This response is using CACHE!!
2014-03-31 19:11:35 TotalTime : 0.00106 This response is using CACHE!!
2014-03-31 19:11:41 TotalTime : 0.00114 This response is using CACHE!!
2014-03-31 19:12:21 TotalTime : 0.00142 This response is using CACHE!!
2014-03-31 19:13:34 TotalTime : 0.00144 This response is using CACHE!!
2014-03-31 19:13:53 TotalTime : 5.92524 This request is Forward to WordPress(with Creating CACHE)
2014-03-31 19:14:08 TotalTime : 0.00096 This response is using CACHE!!
2014-03-31 19:14:17 TotalTime : 4.1745 This request is Forward to WordPress(with Creating CACHE)
2014-03-31 19:15:01 TotalTime : 0.00135 This response is using CACHE!!
2014-03-31 19:15:03 TotalTime : 0.00099 This response is using CACHE!!
2014-03-31 19:15:11 TotalTime : 0.0012 This response is using CACHE!!
2014-03-31 19:18:39 TotalTime : 0.00093 This response is using CACHE!!
2014-03-31 19:20:11 TotalTime : 0.00097 This response is using CACHE!!
2014-03-31 19:20:30 TotalTime : 0.00119 This response is using CACHE!!
2014-03-31 19:21:09 TotalTime : 0.00093 This response is using CACHE!!
2014-03-31 19:21:25 TotalTime : 0.0007 This response is using CACHE!!
2014-03-31 19:23:10 TotalTime : 0.0009 This response is using CACHE!!
2014-03-31 19:26:13 TotalTime : 0.00084 This response is using CACHE!!
2014-03-31 19:29:59 TotalTime : 0.00107 This response is using CACHE!!
2014-03-31 19:30:51 TotalTime : 0.0008 This response is using CACHE!!
2014-03-31 19:31:09 TotalTime : 0.0007 This response is using CACHE!!
2014-03-31 19:32:17 TotalTime : 0.001 This response is using CACHE!!
2014-03-31 19:34:03 TotalTime : 0.0008 This response is using CACHE!!
2014-03-31 19:36:46 TotalTime : 0.00139 This response is using CACHE!!
2014-03-31 19:36:54 TotalTime : 0.00128 This response is using CACHE!!
2014-03-31 19:37:16 TotalTime : 0.0018 This response is using CACHE!!
2014-03-31 19:37:40 TotalTime : 0.0009 This response is using CACHE!!
2014-03-31 19:39:58 TotalTime : 0.00119 This response is using CACHE!!
2014-03-31 19:41:06 TotalTime : 0.00089 This response is using CACHE!!
2014-03-31 19:43:15 TotalTime : 0.00104 This response is using CACHE!!
[/bash]
キャッシュ再構築
キャッシュ再構築機能です。Wordpressの管理画面から、キャッシュ再作成を実行すると、キャッシュ再作成用のPHPページを自動的に生成しちゃいます。
そのURLが表示されるので、ブラウザーでそのURLへアクセスし、ボタン1クリックで、キャッシュが再作成できちゃいます!

動作確認
プラグインの仕様として、リンク経由でアクセスがやってきたときはキャッシュを使います。ブラウザーでF5キーや再表示ボタンを押した場合は、キャッシュを用いずにWordpressに処理を転送します。
注意点
WordPressにログインしている場合は、一切キャッシュしません。 理由は、Wordpressの管理バーの表示されたページがキャッシュされては困る。加えて、新規投稿後に何度も確認作業を行ったりすると思います。その際にキャッシュが効いてしまっては、確認しづらいので、とにかくWordpressへログイン中はキャッシュしません。
もちろん、自分がログインしていても、他の方、つまり別PCからのアクセスはキャッシュが効きます。また、自分でキャッシュの効果を体感したいときなどは、Wordpressからログオフする。もしくは、別のブラウザーで確認、もしくはプライベートブラウズモードなどを使うと良いと思います。
Redisが使えるなら
もし、Wordpress運用環境でRedisのインストールができちゃうなら、Redisを使った高速化方法の方をおすすめします。
このプラグインでも問題ないとは思いますが、インメモリデータベースの方が速いには速いですから・・・
英語なら jeedoさんのサイトを直接見に行ってください。
http://www.jeedo.net/lightning-fast-wordpress-with-nginx-redis/
日本語がお好みなら、jeedoさんのサイトを訳+追記しましたので、こちらを参照ください。
http://lovelinux.mydns.jp/?p=667
信頼性について
まだ作ったばかりですので、100%の出来ではありません。ただ、エラー処理はふんだんに埋め込んであり、不慮の事故でエラーが発生した場合は、処理をWordpressに転送する仕組みになっていますので、このプラグインを導入したからといって、不都合になるようなことはまずないと思います。最初の導入と10分前後のテストさえクリアすれば、以降は快適なキャッシングシステムで、Wordpressを高速化できちゃうと思います。
アンインストール
- WORDPRESS_ROOTにある index.phpを元々のindex.php(original_index.phpとリネームしたもの)に戻す。
- WordPressのプラグイン設定画面より、このプラグインを削除
以上
Leave a comment