おかげさまでアクセス数が増えてきたので、アクセス負荷対策として、PEAR::Cache_Liteを使ってトップページをキャッシュさせることにしました。「あの雑誌、今日発売だよっ!の構成解説と省力化の工夫」でも説明しましたが、このサイトはSQLiteに保存したデータを各PHPファイルで読み込んで表示させています。これがサーバ負荷の原因になるので、キャッシュさせることで改善させます。
インストールからコードまで、参考にしたサイトを下記に挙げます。
- 第7回 キャッシュを導入して、快適なページ表示を実現する (その1)
- PHPでパフォーマンス向上のためのキャッシュテクニック色々
- PHP Performance Series: Caching Techniques
- PEAR マニュアル Cache_Lite_Output::start()
「第7回~」のページでインストール方法とこのライブラリの基本を理解したのですが、ここで紹介されている方法では、元のPHPコードを書き換えなくてはならなかったので、違う方法を探しました。で、見つけたのが、2番目と3番目のサイト。Cache_Lite_Outputを使って、PHPコードをあまり書き換えずに出力部分全体をキャッシュさせることにしました。
ただこちらも.htaccessに変更を加えたりして全ページを対象にしているので、そのまま使わずにトップページのPHPにのみ、該当コードをコピペしました。表示されるページの全体をキャッシュするので、PHPの最初の方にまず以下のコードをコピペします。
//PEARライブラリ読込
require('Cache/Lite/Output.php');
//Cache/Lite/Output オプション設定
//表示部分を $cache->end(); まで、すべてキャッシュ
$options = array(
'cacheDir' => './tmp/', //tmpディレクトリに設定
'lifeTime' => '3600' //3600秒(1時間)に設定
);
$cache = new Cache_Lite_Output($options);
if (($cache->start($_SERVER['REQUEST_URI']))) {
exit;
}
そして、コードの最後に下記をコピペ。
<?php $cache->end(); //ここまでキャッシュ ?>
キャッシュ間隔は、とりあえず1時間で様子を見てみます。日付が変わった後の1時間は前日の結果が表示される不具合が起こります。クレームがたくさんきたらサーバ負荷を考慮した上で、キャッシュ間隔を変更しますね。