どうしてもスループットが出ない。
どこが原因ぞ? と思い調べてみたらば、RenderringViewが笑える重さを誇っていた。700msて。
で、さらに調べるとSmartyが原因だった。
どこから取ってきたかを忘れたSmartyViewクラスをいじったので、その辺のメモ。
コンパイルを1回こっきりにする
Smartyクラスのcompile_checkにfalseを指定する。
結論から言えばこれだけであっさり早くなったんだけれども、ここにたどり着くまでが大変だった。
最初にこのテストをしたときにソースをさっぱり見ずにやったがためにその後に書いてある
clearCompiledTemplate()の記述に気づかなかった。
こいつのせいでコンパイルチェックを無効にしていても
毎回コンパイルファイルが削除されていたのだ。
そりゃ、そもそもチェックする対象がいなければSmartyもコンパイルせざるをえんでしょう。
こんなくだらないことで1日以上悩んだ。悔しいからメモ。
表示が変わらないページにはページキャッシュを利用しよう
基本的にほとんどのページが動的にデータが入れ替わるので結局見送りになっけんだけども、
せっかく調べたので忘れないうちに。鉄は熱いうちに打て。
ページそのものをキャッシュとしてとっておいてそのページをベーと吐き出してしまう。
ただ、CakePHPを使っていると、ちゃんとキャッシュIDを指定してやらないとどのページも
同じだと判断してくれちゃう。どのコントローラ行っても最初に表示したページのままだぞう。
CakePHPはアドレスでページを判別できるのでキャッシュIDにも同じように指定してやればいい。
$this->cacheid = $this->params->url;
これでオーケー。ただ、クエリが違うだけのページはやっぱり同じページに...。
本格的に利用するつもりならもうちょい調べる必要がありますかも。
0 件のコメント:
コメントを投稿