APIやデータベースの取得結果をキャッシュする
ウェブサイトでAPIを利用したり、DB(データベース)から取得したデータをHTML表示する場合、これらのデータをキャッシュさせると様々なメリットがあります。
そもそもウェブサービスなどのAPIには大概リクエスト回数に制限がありますし、APIリクエストしてレスポンス結果を処理してHTML表示するにはそれなりの負荷がかかります。
また、負荷だけでなくAPIのレスポンスに時間がかかる場合はそのままスピードの問題になります。
DBの場合もsqlクエリの実行は負荷がかかりますしスピードも遅くなります。

ですので、APIレスポンスやDBのデータ(一日に一度しか更新しないDBデータなど)に秒単位のリアルタイム性がない場合はこれらの取得データを一定時間毎にキャッシュする事で、負荷・スピード面を大きく改善する事が可能です。
phpのサンプルプログラム(pearのCache_Lite)
以降では、キャッシュ機能をphpで実現する方法をphpプログラムのサンプルをあげて説明します。
phpではpearのCache_Liteを利用する事でキャッシュ機能を実現できます。
それでは、以下にphpのサンプルプログラムを示します。

<?php

//Cache_Liteを利用するためのファイル読込み
require_once("Cache/Lite.php");

//キャッシュオプションを設定した変数の作成
$cacheOptions = array(
  'cacheDir' => './cache/',  //キャッシュディレクトリをcacheに設定
  'lifeTime' => '600',    //キャッシュデータ保持する時間を10分間に設定(秒単位)
);
//キャッシュID設定(ID毎にキャッシュする。ここではキャッシュIDを固定(testId)していますが、実用性を考えるとこの変数は動的に扱うことになると思います。)
$cacheId = "testId";
//Cache_Liteオブジェクト生成
$Cache_Lite = new Cache_Lite($cacheOptions);

//$Cache_Lite->get($cacheId)で指定したIDの有効なキャッシュデータが
//キャッシュディレクトリに存在するかどうかを返す。
if($data = $Cache_Lite->get($cacheId)){
  //有効なキャッシュがある場合の処理
  //キャッシュデータを表示
  echo $data;
}else{
  //有効なキャッシュがない場合の処理
  //HTMLデータを作成
  $data = getHtmlData();
  //生成したデータを表示
  echo $data;
  //データをキャッシュ保存
  $Cache_Lite->save($data,$cacheId);
}

//HTMLデータの作成関数
function getHtmlData(){
  $retStr = "";
  //ここで、APIリクエストやDBデータの取得などキャッシュしたいHTMLを作成する
  ・・・
  return $retStr;
}

?>

プログラムの説明は各コメントを参考にしてください。
サンプルプログラムではキャッシュする保存場所をcacheディレクトリに指定していますので、事前にcacheディレクトリを作成して書込み権限を与えておく必要があります。
このサンプルプログラムを実行すると、cacheディレクトリ内にキャッシュファイルが作成され、そのキャッシュファイルの中身を見てみるとキャッシュされたHTMLが書かれている事が確認できると思います。
また、上のサンプルプログラムではWebAPIから受け取ったxmlファイルをhtmlに整形してからキャッシュしています。WebAPIから受け取ったxmlファイルをキャッシュしたいという方は「simplexml_load_fileで取得したxmlオブジェクトがpearのCache_Liteでキャッシュできない ~ 解決策」を参考にしてください。

参考サイト
Pear Cache_Liteのマニュアル

コメントを投稿する
名前 : 
URL : 
 *入力文字数は全角700文字までです。
おすすめPHP入門書
ノートパソコンの売れ筋ランキング(週間)情報 ~ セカンドマシン探し!
( 集計日:~2010/07/30 )
Webサービス by Yahoo! JAPAN