現在、
CodeIgniterを利用してシステムの開発を行っています。
それで、
大量のマスターデータを保存したデータベース(テーブル)から、
データを取得する処理が含まれるのですが、
毎回アクセスの度にデータベースにアクセスするのは勿体無いので、
キャッシュを利用したいですよね。
そんな場合は、
CodeIgniterには、
=============================
$this->db->cache_on();
=============================
が用意されています。
弊社は不動産業者さんのホームページを作成する機会が多いので、
沿線・駅データを扱う機会が多いです。
例えば、
沿線と駅のデータを保存したテーブルから、
特定の沿線に紐づく駅の一覧を取得した場合、
====================================================================
select * from trainテーブル where railwayline_cd = 沿線コード
====================================================================
というようなSQLクエリを実行させると思いますが、
駅なんてものは頻繁に増えたり減ったりするものではないので、
キャッシュを使ってやった方がいいです。
その場合には、
====================================================================
$this->db->cache_on();
$query = $this->db->query("select * from trainテーブル where railwayline_cd = 沿線コード");
====================================================================
とすれば、
キャッシュの利用が可能になります。
逆に、
頻繁に更新が行われるようなテーブルからデータを取得する場合には、
キャッシュが残ってしまうとマズイですね。
その場合には、
=============================
$this->db->cache_off();
=============================
を利用すれば、
キャッシュ機能をオフにする事が出来ます。
なので、
1つのスクリプトファイルの中で、
「ほとんど更新の無いテーブルからのデータ取得処理」
と
「頻繁に更新が行われるテーブルからのデータ取得」
が混在する場合には、
$this->db->cache_on(); //キャッシュをオンにする
$query = $this->db->query("select * from trainテーブル where railwayline_cd = 沿線コード");
if($query->num_rows() > 0){
foreach($query->result() as $row){
・
何らかの処理
・
}
}
$this->db->cache_off(); //キャッシュをオフにする
$query = $this->db->query("select * from mainテーブル where id = 一意となるID");
if($query->num_rows() > 0){
$res = $query->result();
・
何らかの処理
・
}
みたいなコードを書いてやれば、
多分OK!!
です。
あとは、
/application/config/database.php
の「cachedir」にキャッシュ用のディレクトリのパスを指定しておけば、
キャッシュが保存されていきます。
因みに、
database.phpの「cache_on」を「on」にしておけば、
デフォルトでキャッシュ機能をオンにしておくことも可能です。
この記事へのコメントはありません。