WordPressを高速化するプラグインを作りました

今朝、WordPressのレスポンスを向上させるプラグイン “WP Hyper Response” を作りましたので早速公開します。

このプラグインを使用した場合と使用していない場合の比較動画を作りましたのでご覧ください。
右が使用した場合、左が使用していない場合です。
画面中央にキャプチャソフトのウォーターマークが出ていますがご容赦ください。


この動画は、私が運営している フリー写真素材 :: Free.Stocker のページ表示テストです。
ブラウザキャッシュを無効にするため、Google Chrome のシークレットウインドウを使用しています。

それほど大きな違いは出ていませんが、プラグインを使用したほうが記事ページ(single.php)の表示が速いことがお分かり頂けるかと思います。

後半は管理画面のテストです。
どう見てもプラグインを使用したほうが速くなっていることがお分かりいただけると思います。

実際、このプラグインを使用してから管理画面の作業がだいぶスムーズになりました。

このプラグインは何をしているのか

このプラグインをオンにすると、WordPressサイト及び管理画面のヘッダ(CSSファイルを読み込んだ直後)にPHPの flush() 関数を実行します。
flush() 関数はPHPのバッファを吐かせる関数です。

PHP: flush – Manual

なぜ速くなるのか

通常とプラグインを使用した場合の比較

通常、WordPressは DOCTYPE宣言 から </html> まで全てバックエンドに書きこみ終わってからブラウザに送信しますが、flush() 関数を使うとその時点で一旦ブラウザに送信します。

そのため、通常であればWordPress側で演算が終わるまで待たなければいけないのですが、このプラグインを使うことにより待たずに済みます。

注意事項

このプラグインは無料で商用利用、再配布もOKです。
ただし、このプラグインを使用したことによるいかなる損害も保証致しません。
自己責任でご使用ください。

なお、下記の場合には高速化されない場合がありますのでご了承ください。

  • サーバ側で mod_gzip がオンになっている場合
  • サーバ側でバッファリング手法が指定されている場合
  • キャッシュプラグインがオンになっていて、かつ該当ページが既にキャッシュされていた場合(管理画面のレスポンスは向上するはずです)

※万一ブログや管理画面が見れなくなった際は、お手数ですが高速化プラグインを削除してください。

ダウンロードとインストール

上記注意事項をご確認の上、よろしければ下記リンクからダウンロードして下さい。

お手数ですが、zipを解凍して出てきた wp-hyper-response フォルダを、FTPクライアントソフト等を使い、WordPressの
/wp-content/plugins/
フォルダにアップロードしてご使用ください。

あるいは、WordPress管理画面サイドバーの プラグイン⇒新規追加 から WP Hyper Response で検索してください。

ソースコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
/*
Plugin Name: WP Hyper Response
Plugin URI: http://stocker.jp/diary/wp-hyper-response/
Description: WordPressサイト及び管理画面のレスポンスを向上させるプラグインです。
Version: 1.3
Author: なつき(@Stocker_jp)
Author URI: http://stocker.jp/
*/
 
// admin_head(管理画面のヘッダ)で wp_hyper_response()関数を実行(優先度 9999=最低)
add_action ( 'admin_head', 'wp_hyper_response', 9999 );
 
// wp_head(サイトのヘッダ)で wp_hyper_response()関数を実行(優先度 9999=最低)
add_action ( 'wp_head', 'wp_hyper_response', 9999 );
 
 
// wp_hyper_response関数
function wp_hyper_response() {
 
	// flush関数を実行(バッファを吐かせる)
	flush();
 
}
 
?>

謝辞

flush() 関数を使ってレスポンスを向上させるする手法は、以下の記事で知りました。
WordPressでのページ表示高速化の色々まとめ:phpspot開発日誌

素材サイトを置いているCoreServerというレンタルサーバでテストしたところ、</head>タグの直後だけでなく、DOCTYPE宣言の前にも flush() 関数を書いたほうがより効果的で、特に管理画面のレスポンスに大きな向上が見られたためプラグインにしたほうが良いと思い、このプラグインを制作しました。

WordPressのプラグインの作り方は、以下の記事で知りました。
初心者でも10秒でできる WordPress プラグインの作り方 | ウェブル

プラグインを作るにあたって、管理画面のヘッダ内に特定の関数を適用するには admin_head を使えば良いということを @wokamoto さんに教えていただきました。

ありがとうございます。

追記(2011/6/1)

一部の方から「WordPressの管理画面が真っ白になる」「リダイレクトエラーが出る」という報告があったため、initの部分を削除した修正版(バージョン1.3)を配布しました。

@miya0001 さんより以下のご指摘を頂いています。

@Stocker_jp flush()の効果はcssやjsを並行作業で読ませることで体感速度を向上させます。ただし、gzip使った時と比較して接続から切断までの時間が長くなるので、webサーバーがプロセスを大量につくってしまいます。Wed Jun 01 02:47:10 via Twitter for Mac

つまり、大量のPVがあるブログでこのプラグインを導入するとサーバの負荷が増えてしまいますのでご注意ください。
もしサーバが負荷に耐えられなくなった際は、このプラグインを削除するかサーバを移転する必要があります。

If you like this article click the Facebook “Like” button to share it with your friends!