第7回 キャッシュを導入して、快適なページ表示を実現する - マッシュアップ講座
ZAPA先生のマッシュアップ講座
Lecutures on PHP
第7回 キャッシュを導入して、快適なページ表示を実現する (その1)
キャッシュを導入して、快適なページ表示を実現する
前回まで、各WebサービスAPIの利用方法とマッシュアップサイトの作り方を解説してきました。実はAPIを利用したサイトを運営していると、以下の3つの問題点が浮き彫りになります。
- API提供元サーバーへの負荷
- 自分のサーバーへの負荷
- ユーザー閲覧時のレスポンスの遅さ
API を利用する場合、データ取得のための通信コストとデータ解析のための処理コストがかかることになります。API によっては、1 秒間や1日間のAPI コール数を制限されていることもあります。また、アクセスの度にXMLを処理していては自分のサーバーへの負荷も高まってしまい、ユーザーも快適に利用できる状況とは言えなくなってしまいます。これらの問題を解決するために、一般的には「キャッシュ」の仕組みを利用しています。一度APIをコールして結果を生成したら、一定時間同じ結果を表示させることで、それぞれの負荷を減らして、快適なページ表示を実現させています。特に、最新の情報がそれほど必要にならないサービスにおいては、キャッシュ時間を長く設定することで、レスポンスを劇的に改善することが可能になります。
今回は、キャッシュの仕組みとしてPEARライブラリのCache_Lite(*1)を利用する手順を解説します。サーバーにCache_Liteがインストールされていない場合は、以下のコマンドを入力してサーバーにインストールして下さい。
# pear install Cache_Lite
サーバーにPEARライブラリをインストールできない場合は、PEAR公式サイトからダウンロードしてLite.phpをCacheディレクトリ内に配置して下さい。また、キャッシュファイルを保存する場所として、tmpディレクトリを作成し、書き込み権限を与えておいて下さい(例:777など)。このPEARライブラリには日本語のドキュメント(*2)も用意されていますので、利用方法がわからなかったり、もっと詳しい内容を知りたかったりする場合は、公式のドキュメントを確認して下さい。
Cache_Liteは以下の手順で、読み込み・設定・オブジェクト生成を行います。
//Cache_Liteインクルード require_once "Cache/Lite.php"; //キャッシュオプション設定 $cacheOptions = array( 'cacheDir' => './tmp/', //tmpディレクトリに設定 'lifeTime' => '3600', //キャッシュを保持する時間を1時間に設定 ); //キャッシュID設定 $id = "area"; //Cache_Liteオブジェクト生成 $Cache_Lite = new Cache_Lite($cacheOptions);
キャッシュオプションのcacheDirにはキャッシュを保存するためのディレクトリ、lifeTimeにはキャッシュさせる時間を設定して下さい。データの更新が頻繁なAPIであればキャッシュ時間は短めに、あまり更新がないAPIであればキャッシュ時間は長めに設定すると良いでしょう。そして、Cache_Liteオブジェクトを生成し、識別子としてキャッシュIDを設定して、有効なキャッシュが存在するかどうかをチェックします。有効なキャッシュがある場合は、キャッシュをそのまま表示し、有効なキャッシュがない場合は、データを生成して表示した後、キャッシュに保存します。
if($data = $Cache_Lite->get($id)){
//有効なキャッシュがある場合の処理
//キャッシュデータを表示
echo $data;
}else{
//有効なキャッシュがない場合の処理
//生成したデータを表示
echo $data;
//データをキャッシュ保存
$Cache_Lite->save($data,$id);
}
----
*1):http://pear.php.net/package/Cache_Lite
*2):http://pear.php.net/manual/ja/package.caching.cache-lite.php
- 1
- 2




ページのトップへ


GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。