サーバ負荷対策一部完了
あー、面倒だった。
の変更。
これからしばらく様子みて、
もやるかもしんない。
「ethnaでsmartyのcacheを使うにはどうすればいいの?」って聞いたら「smartyのcacheは悪だから対応してないらしい」と言われ、必死で対応させてみた。
変更方法は以下の通り。
- action_form
- setFormVars()をオーバーライドして、パラメータでユニークなIDを生成。具体的には、getArray()で配列とって、arsort()して、foreachでkey:valueで連結しただけ。actionの処理を行うとafの値が色々変化するので、setFormVars()で生成するのがいいっぽい。
- ユニークなIDを取得するための関数追加
- 全ページのactionformにこれを継承させる
- controller
- smartのcacheを有効化
- _trigger_WWW()をオーバーライド。action名からテンプレート名をとって、cache_idを拡張したactionformからidをとって、一致するcacheがあればそれをdisplay。なければ通常処理に移る。
- view
- forward()をオーバーライド。cache_idを拡張したactionformから取得し、display時にcacheのidを指定。
- controllerのデフォルトviewをこの拡張viewに変更。
こうすれば、
- 同じaction_formの値であれば同じ結果を出せる
- 違うもの(ページ/人気度が違う)であれば、新しく作れる
- 無効なパラメータであれば、無効なパラメータ用のcacheが作られるが、どうせcronで消してるのでhddが一杯になる、ということはない。
- 表示するviewをaction側で分岐する場合はcontrollerのtrigger_WWW()でaction名からtemplate名を取る、ってのはできないけど、どっちにせよcacheのミスするので問題無し。
あー、面倒臭かった。