Codeigniter

サイト制作

CodeigniterのWebキャッシュを使ってみる

ただでされ高速なCodeigniterですが、静的ページの場合、毎度DBやCodeigniterシステムから読み出す必要もないため、Webページキャッシュを使うことでサーバーの負荷を軽減ができるということで、使ってみました。

CodeigniterのWebキャッシュの使い方

使い方は簡単で、キャッシュしたいコントローラーに、下記を記述するだけ。

$this->output->cache("保存したい時間");

時間は分単位。

キャッシュをすると、/application/cache
内に、キャッシュファイルが作成されます。

ちなみに、キャッシュファイルには下記のように設定した時間が記述されています。

1424878931TS--->

----以下省略----

毎回見に行って、この時間を過ぎてたらキャッシュを読まないという設定ですね。

中身は、完全に出力した内容がそのまま記述されているので、「ページのこの部分だけキャッシュ」とかはできないようです。

さて、効果ですが、Codeigniterのデフォルトのページレンダリングベンチマークで計測すると、

・キャッシュ無し・・・0.0058 seconds
・キャッシュあり(初回)・・・0.0456 seconds
・キャッシュあり(2回目以降)・・・0.0024 seconds

初回が遅いですが、サーバーとか回線の状況かも?ってレベルです。ひょっとしたら、出力結果をキャッシュファイルに書き込む時間が影響しているのかも。

2回目以降は、半分くらいの速度ですね。速いです。

出力されたページ内容をファイルにしているだけなので、動的なページでは運用が難しいですね。その場合はDBキャッシュを使うのが良さそう。

Codeigniterのキャッシュファイルの削除方法

さて、キャッシュをすると出てくるのがキャッシュの管理。

キャッシュしたファイルを消したい場合は、基本的には設定した時間まで待つか、/application/cacheのファイルを消すかって感じですが、ファイル名が乱数になっているので、どこのファイルを消せばいいか、一見わからない。

しかし、Codeigniterのシステムプログラムを見てみると、このファイル名は、単純に「URLをMD5でハッシュ値にした」だけなので、それを消せばOK。

当方は、ハッシュ値のファイルがあるかを見て、キャッシュファイルを消す関数を用意してキャッシュファイルを消す仕組みにしてみました。

どこの部分をキャッシュ化するかなど、細かい設定を作っていけば、かなり高速なWebサイトが作れそうですね。