CodeIgniterのwebページキャッシュを検証する
webページキャッシュの導入方法や導入前後でのパフォーマンスの比較結果を書きました。
環境
vagrantでcodeigniterを構築
CodeIgniterのバージョンは 3.1.0
検証コード
1億回ループする簡単なコードです。
$this->output->cache(n);をアクション内の好きなところに書くだけで、キャッシュされます。ただ、後ほど説明する権限周りの調整は必要です。
public function index() { //5分間ファイルキャッシュ //キャッシュファイルはデフォルトでapplication/cacheに格納される $this->output->cache(5); $tmp = 0; //1億回ループ for ($i=0; $i<=100000000; $i++) { $tmp += 1; } $this->load->view('welcome_message'); }
アクション内に書くことで、そのアクションのページをキャッシュします。
全ページ一括でキャッシュする書き方もありますが、今回は記述しません。
キャッシュ機能を利用するための準備
キャッシュファイルを格納するディレクトリの権限を変更します。 僕の環境ではディレクトリを以下の権限にしました。
drwxr-xrwx@ cache/
これで、キャッシュをしたいページにアクセスすると/application/cache配下にキャッシュファイルが作成されます。
7227268e442aff504545d01ff534741f index.html*
これで再度ページにアクセスしたら早くなると思ったのですが、全く早くなりませんでした。 作成したキャッシュファイルの権限が問題でした。
-rw-r----- 7227268e442aff504545d01ff534741f
以下のように権限を設定したところ、キャッシュを利用できました。
-rw-r--r-- 7227268e442aff504545d01ff534741f
検証結果
今回、検証するページとして、codeigniterを導入後に一番初めに表示されるページを利用しました。 ページスピードが画面上に表示されるので、便利です。
キャッシュを利用前(5.1692s) [:W400]
キャッシュ利用後(0.03s) [:W400]
1億回のループ分早くなっていることが分かります。
まとめ
codeigniterのwebページキャッシュは、コードに一行加えるだけで簡単に実装可能でした。 ただ、一部のapiをキャッシュなどではなく、ページ全体をキャッシュするので、 動的な処理が多いサイトで今回のキャッシュを入れるとなると、色々と考慮する必要がありますね。