symfony1.2でDoctrine1.1使ってJobeetチュートリアル22日目

ページをキャッシュして描写を素早くの回。
いよいよ詰んだ。Doctrineはキャッシュ周りが未だ不安定です。

Previously on Jobeet

yamlの設定ファイルは、php形式に変換されてキャッシュされている。
今回は、ページあるいはパーツをキャッシュする。

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設けるか、関数用いる。


とりあえず、キャッシュ使わずに先へ進みます。