[Smarty] キャッシュの利用と効果

開発中のサイト(Smarty使用)の表示速度がいまひとつ。原因はデータベース絡み(設計と実装が悪い)ということはわかっているのだけど、リファクタリングする前にSmartyのキャッシュの効果を試してみる。

要件とコード

トップページの表示内容は1日1回のデータベース更新によって変わる。逆に言えば、データベースが更新されてから24時間は表示内容は変わらない。さらに、ログイン中のユーザ名と選択されている言語によって表示内容がパーソナライズされる。

キャッシュを使うにはうってつけの要件かも。ユーザ名と言語を組み合わせた文字列をキャッシュIDとし、キャッシュの有効期限を24時間とすれば、コードは以下のように書ける。

結果

かなりの効果があった。(160ms→25ms)

キャッシュを使わないとき
smarty_no_cache

キャッシュを有効にした直後のアクセス (キャッシュ生成)
smarty_cache1

キャッシュが効いているアクセス (キャッシュをロード)
smarty_cache2

参考サイト

PHP TIPS – 47. Smartyのキャッシュを使って負荷を下げよう:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20070704/276676/