パフォーマンス」タグアーカイブ

WordPress on PHP5.4.0 RC4 + APC

明けましておめでとうございます。本年も、よろしくお願いいたします。

スクリーンショット(2012-01-03 11.15.50)さて、パフォーマンスアップしたと噂の PHP 5.4 系。
WordPress も、ちゃんと動くんかいな?と思って試してみました。
使用しているプラグインによっては問題が出てくるかもですが、とりあえずデフォルト状態の WordPress 3.3 + TwentyEleven では問題なさそうです。
あと、このサイトで使ってるプラグインでも問題は発生しなかったようです。

ちなみにこのサイトで使ってるプラグインの一覧は以下の URL で見ることができます。
https://dogmap.jp/plugins/3/
続きを読む

め組VPSに移行後に設定した項目

さくらの共用サーバから、め組のVPSに移行した際に設定した項目のメモです。
大まかにはこんな感じ

続きを読む

WordPressサイト用の.htaccess例

よりパフォーマンスの良い WordPress サイトを構築したいならば .htaccess ファイルを修正しましょう。
Webサーバに apache 2系を使用しているサイト用に、私が書いた .htaccess ファイルを元に解説します。

基本方針は

  • mod_deflate が使える場合は、有効にしてコンテンツを圧縮転送する。
  • mod_expires が使える場合は、有効にして画像ファイル等の静的ファイルをブラウザにキャッシュさせる。
  • 適切な ETag を発行して、ブラウザのキャッシュを制御する。
  • アクセスしてほしくない WordPress ファイルに対するアクセスをブロックする。
  • 存在しない静的ファイルに対してアクセスされた場合、WordPressを起動させない。

続きを読む

DB Cache Reloaded

久しぶりに WordPress 用プラグインの紹介。
今日、紹介するのは DB Cache Reloaded というプラグイン。
簡単に言えば WordPress – DB 間のクエリをキャッシュしてくれるプラグインです。
サクラのレンタルサーバのようにDBが他サーバにあって WordPress – DB 間の通信がボトルネックになってるようなサイトにはオススメ。

このプラグインの前身である DB Cache ってプラグインを使ってたんですが、WordPress が2.8にバージョンアップしてから、正常に動作しなくなってました。
久しぶりにふと思い立って公式プラグインディレクトリを見にいったら、DB Cache は WP 2.8 以降に対応してなかったけど
、代わりに DB Cache Reloaded ってプラグインがあるじゃありませんか。

日本語リソースも作っておいたので、よろしければお使いください。
db-cache-reloaded-ja.zip

続きを読む

WordPress Object Cache のバックエンドに Tokyo Cabinet を利用する

2.5以前の WordPress には Object Cache という機能がありました。
最近の WordPress では、この機能はデフォルトでは使えない状態になっているのですが、wp-content フォルダに object-cache.php というファイルを置き、wp-config.php に "define(’ENABLE_CACHE’,true);" を追加することで、この機能が使用できるようになります。
この object-cache.php は、WordPress のコアには含まれていないので、どこからか調達してくる必要があります。
バックエンドに何を使うかにも寄りますが、ファイルや memcached に Cache 情報を持たせるモジュールが提供されています。

参考URL:

で、この object-cache.php を書いてしまえば、Memcached やファイルだけでなく、軽量データベースライブラリ Tokyo Cabinet なんかもバックエンドのDBとして利用できるのです。
ってなわけで、レンタルサーバに Tokyo Cabinet をインストールして、WordPress から利用してみましょう。
続きを読む

WordPress.com Stats の JavaScript を並列読み込み対応にする

昨日のエントリの続き。
WordPress.com Stats 日本語版の JavaScript を並列読み込み対応にしてみましょう。

WordPress.com Stats 日本語版で JavaScript を読み込み、動作用の JavaScript をフッタに書き出しているのは、stats.php の 107 〜 113 行目の以下のコード。

<script src="http://stats.wordpress.com/e-<?php echo gmdate('YW'); ?>.js" type="text/javascript"></script>
<script type="text/javascript">
st_go({<?php echo stats_array($a); ?>});
var load_cmc = function(){linktracker_init(<?php echo "{$a&#91;'blog'&#93;},{$a&#91;'post'&#93;},2"; ?>);};
if ( typeof addLoadEvent != 'undefined' ) addLoadEvent(load_cmc);
else load_cmc();
</script>

まず、外部 JavaScript http://stats.wordpress.com/e-<?php echo gmdate('YW'); ?>.js を読み込み、その後 st_go() 関数、linktracker_init() 関数を呼び出しています。

外部 JavaScript の読み込みが完了してからでないと st_go() 関数を呼び出すことはできないため、並列読み込みでは問題が生じます。
# JavaScript のロード完了まで待たないで継続処理を行われると処理不可能。

また、st_go() 関数の中では document.write() を使って <img> タグを書き出しているため、単純に DOM 操作で <script> タグを head 内にブチ込むだけでは、うまくいきません。
続きを読む

JavaScript 読み込みの並列化

JavaScript の並列読込Safari, IE8 以外のブラウザでは JavaScript の読み込み中は、画像や CSS、他の JavaScript ファイルなどの読込処理がブロックされる。
これをDOM経由で動的にロードすると、並列で読み込まれるようになりますよと言うお話。
元ネタは、マイコミジャーナルの「JavaScript読み込みブロック回避でページ表示を高速化する方法」と言うエントリ。
右図が、当サイトに実装した際の Firebug のネットワークモニタ結果(JavaScriptのみ)。(クリックで拡大されます)
確かに並列読み込みされている。

JavaScript の並列読込処置前比較のために実装前の Firebug のネットワークモニタ結果(JavaScriptのみ)も載せておきます。
一つの JavaScript が読み込み終わるまで、次の JavaScript の読み込みが待ちになっている様子が分かりますね。
読み込んでいる JavaScript ファイルが少ないのは、並列読み込み用に使った Yahoo! UI Library の Get Utilityを、こちらでは読み込んでいないことと、自サイト内の Javascript を動的結合しているため。
# 読み込みファイル数が少ない実装前の方が、総読み込み時間が多くなっている。
続きを読む