cache.yml設定ファイルはビューレイヤー用のキャッシュ設定を記述します。
この設定ファイルはsettings.ymlでcache設定が有効な場合のみアクティブになります。
tip
クラスのコンフィギュレーションはキャッシュのために使われ関連設定はview_cache_managerとfactories.yml設定ファイルのview_cacheセクションで行われます。
アプリケーションが作成されるとき、symfonyはアプリケーションのconfig/ディレクトリにデフォルトのcache.ymlファイルを生成します。
このファイルはアプリケーション全体のキャッシュを記述します(defaultキーの下)。
デフォルトでは、キャッシュはグローバルスコープでoffにセットされます:
default: enabled: off with_layout: false lifetime: 86400
tip
デフォルトではenabled設定はfalseにセットされるので、キャッシュを選り分けて有効にする必要があります。
ほかの方法もあります:
グローバルスコープのキャッシュを有効にし、キャッシュする必要のない特定のページでキャッシュを無効にします。
どちらのほうがアプリケーションの作業量が少ないのかによって選ぶ方法が決まります。
はじめの章で説明したように、cache.ymlファイルはコンフィギュレーションカスケードのメカニズムが有効になり、定数を格納することができます。
note
cache.yml設定ファイルはPHPファイルとしてキャッシュされます;
処理はsfCacheConfigHandlerクラスによって自動的に管理されます。
アプリケーションのデフォルトコンフィギュレーションはモジュールのconfig/ディレクトリのなかでcache.ymlファイルを作ることでモジュールのためにオーバーライドできます。
メインキーはプレフィックスのexecuteなしのアクションの名前です(たとえばindexキーはexecuteIndexメソッドです)。
名前にアンダースコア(_)のプレフィックスをつけることでパーシャルもしくはコンポーネントもキャッシュできます。
アクションがキャッシュされるかどうか決定するのに、symfonyは次の順序で情報を探します:
存在するのであれば、モジュール設定ファイルでの特定のアクション、パーシャル、コンポーネント用のコンフィギュレーション;
存在するのであれば、モジュール設定ファイルでのモジュール全体用のコンフィギュレーション(
allキーの下);アプリケーションのデフォルトコンフィギュレーション(
defaultキーの下)
caution
クエリーストリングのGETパラメーターで送信されるリクエストや、POST、PUTもしくはDELETEメソッドで投稿されたリクエストはコンフィギュレーションに関わらず決してキャッシュされません。
enabled
デフォルト: off
enabled設定は現在のスコープでのキャッシュを有効もしくは無効にします。
with_layout
デフォルト: false
with_layout設定はページ全体(true)、かアクションのみ(false)をキャッシュするかを決定します。
note
with_layoutオプションはパーシャルとコンポーネントキャッシュには考慮されません。
これらはレイアウトによってデコレートできないからです。
lifetime
デフォルト: 86400
lifetime設定はサーバーサイドキャッシュの有効期間を秒単位で定義します(86400秒は1日に等しい)。
client_lifetime
デフォルト: lifetimeの値と同じ
client_lifetime設定はクライアントサイドキャッシュの有効期間を秒単位で定義します。
すでにLast-ModifiedもしくはExpiresヘッダーがセットされていない限り、この設定はExpiresヘッダーとmax-cacheキャッシュコントロール変数を自動的にセットするために使われます。
この値を0にセットすることでクライアントサイドキャッシュを無効にできます。
contextual
デフォルト: false
contextual設定はキャッシュが現在のページのコンテキストに依存するかどうかを決定します。
それゆえ設定はパーシャルとコンポーネント用に使われるときのみ意味があります。
インクルードされるテンプレートによってパーシャルの出力が異なるとき、パーシャルはコンテキスト上(contextual)であると考えられ、contextual設定はtrueにセットしなければなりません。
デフォルトでは、設定はfalseにセットされます。
falseにセットされているということはパーシャルとコンポーネントがどこでインクルードされても、出力が常に同じであることを意味します。
note
異なるパラメーターのセットに対してキャッシュは明らかに異なります。
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.