cache.yml 設定ファイル
ビューレイヤーのキャッシュコンフィギュレーションは ~cache.yml
~ ファイルのなかで記述します。settings.yml
ファイルのなかで cache
設定が有効になっている場合にかぎり、この設定ファイルは有効です。
TIP クラスのコンフィギュレーションはキャッシュに使われ、関連するコンフィギュレーションを変更する場所は
factories.yml
ファイルのview_cache
とview_cache_manager
セクションです。
デフォルトでは、cache.yml
ファイルはアプリケーションの config/
ディレクトリに配置されています。アプリケーション全体におけるキャッシュの要件はこのファイルに記述します (default
キーの下)。デフォルトでは、グローバルなキャッシュは無効です。
[yml]
default:
enabled: false
with_layout: false
lifetime: 86400
TIP デフォルトでは、
enabled
設定にfalse
がセットされているので、キャッシュを個別に有効にする必要があります。別の方法として、グローバルキャッシュを有効にしてから、キャッシュする必要のない特定のページでキャッシュを無効にすることもできます。作業が少ないほうを選ぶとよいでしょう。
設定ファイルの原則の章で述べたように、cache.yml
ファイルでは、コンフィギュレーションカスケードのメカニズムがはたらいており、定数を定義することができます。
NOTE
cache.yml
ファイルのキャッシュは PHP ファイルとして保存されます。処理は ~sfCacheConfigHandler
~ クラスにゆだねられます。
モジュールのためにアプリケーションのデフォルトコンフィギュレーションをオーバーライドするには、cache.yml
ファイルをモジュールの config/
ディレクトリに配置します。メインキーはアクションの名前で、プレフィックスの execute
はつけません (たとえば executeIndex
メソッドであれば index
)。名前にプレフィックスのアンダースコア (_
) をつければ、パーシャルもしくはコンポーネントもキャッシュできます。
symfony はアクションをキャッシュするかどうかを決めるために次の順序でコンフィギュレーションの情報を探します。
モジュールの設定ファイルに存在しているのであれば、特定のアクション、パーシャル、コンポーネントのコンフィギュレーション
モジュールの設定ファイルに存在しているのであれば、モジュール全体のコンフィギュレーション (
all
キーの下)アプリケーションのデフォルトコンフィギュレーション (
default
キーの下)
CAUTION コンフィギュレーションにかかわらず、クエリ文字列のなかの
GET
パラメータをともなうリクエストや、POST
、PUT
もしくはDELETE
メソッドによるリクエストはキャッシュとして保存されることはけっしてありません。
~enabled
~
デフォルト: false
enabled
設定は現在のスコープにおけるキャッシュを有効もしくは無効にします。
~with_layout
~
デフォルト: false
with_layout
設定はキャッシュの対象をページ全体 (true
) かアクション限定 (false
) にするのかを決めます。
NOTE パーシャルとコンポーネントキャッシュには
with_layout
オプションの効果はありません。これらをレイアウトによってデコレートすることができないからです。
~lifetime
~
デフォルト: 86400
lifetime
設定はサーバーサイドキャッシュの有効期間を秒単位で定義します (1日を秒数に換算すると86400
秒です)。
~client_lifetime
~
デフォルト: lifetime
の値と同じ
client_lifetime
設定はクライアントサイドキャッシュの有効期間を秒単位で定義します。
すでに Last-Modified
もしくは Expires
ヘッダーがセットされていないかぎり、Expires
ヘッダーと max-cache
キャッシュコントロール変数を自動的にセットするためにこの設定が使われます。
この設定に0
をセットすれば、クライアントサイドキャッシュは無効になります。
~contextual
~
デフォルト: false
contextual
設定はキャッシュを現在のページのコンテキストに依存させるかどうかを決めます。それゆえ、この設定の効果があるのは、パーシャルとコンポーネントによって使われている場合にかぎられます。
インクルードされるテンプレートによってパーシャルの出力が異なるとき、パーシャルはコンテキストのなかにある (contextual) と見なされるので、contextual
設定に true
をセットしなければなりません。デフォルトでは、この設定に false
がセットされており、このことが意味するのは、パーシャルとコンポーネントがインクルードされる場所がどこであれ、出力はつねに同じであるということです。
NOTE パラメータのセットが異なればキャッシュが異なるのはあきらかです。