category:
Diary
Back to Blog Index
ブログのパフォーマンス向上レポート『Better performance report of my blog』
さて、ここ2,3日でブログのパフォーマンス向上に取り組んでいるのでレポートです。
久々に手を加えると気持ちいいですね。ディテールに凝る感じがとても気分がいい。
しかもかなり結果が出たのでうれしいです。
CREAMUへのアクセスの体感速度が上がったと思うんですがいかがでしょうか?
今までソースをバンバン書いたり、動的なものを起きっぱなしにしたりしていたので、表示に時間がかかっていました。
サーバを移転したきっかけでパフォーマンスをもっと上げたくなったので、いろいろとやってみました。
大きくは以下の2つです☆
(1) 不要なjsファイルを削除する。
(2) PHPで動的に呼んでいるところをキャッシュする。
さて、(1)ですが、Ajax系の動きを紹介するためにバンバン<head>にjsを読み込んでいたんですが、特に必要のないページがほとんどなので、一旦不要なjsファイルを削除しました。
エントリーごとにbodyの中に書けるものは書いていこうと思います。
<head>内に書く必要があるものについては仕方ないんですが、見直していきます。
これからAjax系の動きを紹介する場合はサンプルページを作って、そこにjsを書くのがシンプルで綺麗かな。
そうしていこうっと。
(2)について、これがパフォーマンス向上の決め手でした。すごいですね、キャッシュ。
PEARのCache Liteを使いました。恥ずかしながら使うのは初めて。。。キャッシュっていっても本では簡単そうに書いてるけど、どこからどこまでをキャッシュするのか、どうやって今あるファイルに追記すればいいのかよくわからなかったんですね。
なので、毎回PHPを呼び出すか(すみません。。)、cronでシェルを作って定期的に.txtファイルをPHPから吐き出し、その吐き出されたファイルをHTMLでインクルードするという方法をとっていました。。
でも、キャッシュを使えば簡単に同じことができるんですね。。かなり感動しました。PHP5のSimpleXML以来の感動、みたいな感じかな!
さて、それではキャッシュの方法です。2つあります。
(1) Magpie RSSでのキャッシュ
(2) PEAR Cache Liteを使ったキャッシュ
(1)について。
今まで動いていたものに以下を追記しました。
——————————————————————-
define(‘MAGPIE_OUTPUT_ENCODING’, ‘UTF-8’); //明示的に出力エンコードをUTF-8に指定
define(‘MAGPIE_CACHE_ON’, 1); //キャッシュをオンにする
define(‘MAGPIE_CACHE_AGE’, 60*60*1); //キャッシュ保存時間
define(‘MAGPIE_FETCH_TIME_OUT’, 60*5); //タイムアウト時間
define(‘MAGPIE_CACHE_DIR’, ‘cache’); //キャッシュ先のディレクトリ名
require_once ‘rss_cache.inc’; //もしかしたら不要かも
require_once ‘rss_fetch.inc’; //以前から存在
require_once ‘rss_utils.inc’; //以前から存在
——————————————————————-
次に、PHPと同じ階層に「cache」ディレクトリを作ります。↑で指定したキャッシュ先のディレクトリですね。名前は任意です。
「cache」ディレクトリのパーミッションを707に変更(サーバによっては755、あるいは777)。
そしてPHPを実行すると、「cache」 ディレクトリにキャッシュファイルが作成されます。
キャッシュ保存時間に従って、キャッシュファイルの内容が読み込まれます。静的なファイルを読むので格段に速くなるんですね。
キャッシュファイルの中身を見てみると、<div>で普通にHTMLが書いてあって、なるほど〜と納得しましたw。
(2)について。
まず、Cache_LiteからPEAR Cache Liteをダウンロード。
「Cache」フォルダをサーバにアップロード。
続いて、PHPに以下のように記述。
$words = ‘クエリ’; //検索クエリなど、変数を入れてOK。決め打ちの場合は変数以外を入れる。
$cache_period = 24*3600;
//$cache_period = 0; // キャッシュさせないときのデバッグ用
$result = include_once ‘Cache/Lite.php’;
if ($result === false) {
echo ‘PEAR Cache_Liteライブラリが’
.’呼び出せません’;
exit();
}
$options = array(
‘cacheDir’ => ‘cache/’,
‘lifeTime’ => $cache_period,
);
$cache_lite = new Cache_Lite($options);
$cache_id = $words; //変数があればクエリごとにキャッシュ
$cached_data = $cache_lite->get($cache_id);
if ($cached_data) { //キャッシュが有効ならキャッシュの内容を表示
echo $cached_data;
// exit();
}else{
ob_start();//以下がcacheファイルに書き出される
echo “”; //出力する内容をechoで記述。この内容がキャッシュファイルに書き出される
$text = ob_get_contents();
ob_end_flush();//以上がcacheファイルに書き出される
$cache_lite->save($text, $cache_id);// 今回のcache_idでキャッシュへ保存
次に、指定した「cache」ディレクトリを作成して、パーミッションを777に変更(サーバによっては755)。
PHPを実行すると、「cache」ディレクトリにキャッシュファイルが作成されます。
といったところですね。
これでアクセススピードが格段に上がりました☆動的なものを読む際には必ずやっておきたいですね。
パフォーマンスが悪いという方はぜひやってみてください☆
Cacheについては秋元さんの以下の本に詳しいのでぜひ。
休日ですねーー。朝方まで作業して気を失うように眠りました。。
今日も天気がいいし出かけようっと。花火に行ってきます☆
