とうとうリリースされたWordPress3.2 ガーシュウィン(コードネーム)。英語版に続いて日本語版も既に公開されています。
今回も新しいデフォルトテーマの Twenty Eleven を初めとして、いくつもの改良がなされています。
その中で、個人的に地味ではあるけどありがたいのが、管理画面(特にダッシュボード)の表示スピードアップです。WordPress.orgの3.2紹介ビデオでの約50秒から1分にかけてのスピードアップについての紹介のくだりを見ていただければ、3.1系と比較して瞬時に表示されていることが見て取れます。
今回は、その手法や仕様について調べて分かったことを書き連ねてみます。
高速化の秘訣はキャッシュとAjaxリクエストの削減
デフォルト状態のダッシュボードでは、RSSを読み取って表示しているブロックが、「被リンク」「プラグイン」「WordPress ブログ」「WordPress フォーラム」の4カ所存在しています。ところがRSSを読み取っての表示は、インターネットを介しての通信が発生するため、必然的に処理にかかる時間が遅くなってしまいます。
3.1までのWordPressでは、この問題への対応策としてAjax化させて遅延表示にさせていました。
また、Javascript実行環境判別のためか、クイック投稿ブロックにもAjaxを採用していました。
この対応策の弊害として、ダッシュボードの表示には、ダッシュボード本体のリクエストの他にAjaxのリクエストが5回行われるというサーバにとってはありがたくない状態になっていました。(通常の5倍のアクセスがあると思って下さい。)(画像:WordPress3.1のダッシュボード読み込みタイムライン参照)
これに対し、WordPress3.2では、4ブロックのRSSウィジェットの表示するHTMLそのものを12時間のキャッシュとしてデータベースに保存し、キャッシュが有効な場合はキャッシュデータを表示。これによって、毎回Ajaxのリクエストが発生しないようになっています。
クイック投稿についても、Ajaxでの表示を止めて、直接HTMLを書き出す仕様に変更されています。
これらの変更により、ダッシュボードでのリクエスト数も削減され、表示完了までの時間も短くなっています。(画像:WordPress3.2のダッシュボード読み込みタイムライン参照)
そして何より、このAjaxリクエストを削減したおかげで、その分、サーバが別のリクエスト処理を行えることが助かります。
一部のデメリットとして、プラグインの表示が12時間同じままになってしまうというのがありますが、メリットと比較すれば、微々たるものではないかと思います。
簡単なまとめ
- 3.2系のダッシュボードでは、RSSウィジェットで出力のキャッシュを用いて高速表示を実現している。
- キャッシュの有効時間は12時間
- キャッシュ化によりAjaxのリクエストが削減。サーバの負荷低減に寄与
- プラグインの表示が12時間同一となる