symfony1.2でDoctrine1.1使ってJobeetチュートリアル22日目
ページをキャッシュして描写を素早くの回。
いよいよ詰んだ。Doctrineはキャッシュ周りが未だ不安定です。
Creating a new Environment
キャッシュ設定は、settings.ymlで行われている。prod環境はデフォで有効だが、test, devはデフォだと無効
devのキャッシュを有効にしてもいいけれど、今回はキャッシュ用の環境を追加。
新しい環境と言っても、frontend_dev.phpコピーして、環境にcacheを指定するだけ。
settings.ymlにcache環境用の設定書き足して準備完了。
$ symfony cc
で、設定読み込み直すのをお忘れずに。
Cache Configuration
キャッシュ使うこと自体は有効にしたけれど、cache.ymlを見てわかる通りどのページもキャッシュしていない。
でも、ここは、いじらなくておk。
Page Cache
Jobeetのホームページは一番表示されるページだから毎回データベースにアクセスしてられない。
sfJobeetPluginの方へキャッシュ用の設定ファイル追加。
ブラウザをリロードすると、ページ左上に「このページはキャッシュが有効ですよボックス」が出現。
もう一度リロードすると、ボックスの色が緑から黄色に変わる。キャッシュが効いている証拠。データベースアクセスしてない。
どんな設定にしても、GET, POST, PUT, DELETEメソッドはキャッシュできない。
Clearing the Cache
キャッシュは、
$ symfony cc
で消せる。
オプション付ければ、細かい指定も可能。
Action Cache
アクションだけキャッシュして、レイアウトはキャッシュしたくない場合は、with_layout: falseを追記する。
Partial and Component Cache
パーシャル、コンポーネントレベルでのキャッシュも可能。
通常、パーシャルやコンポーネントはどこで呼ばれても同じ内容を返す。しかし、そうでない場合もある。そういうときは、 contextual: trueを追記。
Forms in Cache
formオブジェクトのserializeでエラー吐いた。
http://trac.symfony-project.org/ticket/4572
チケットも発行されてる。symfony-1.2.2に期待。
Removing the Cache
lifetime設けるか、関数用いる。
とりあえず、キャッシュ使わずに先へ進みます。