cache.yml 設定ファイル

~cache.yml~ 設定ファイルでは、ビューレイヤーのキャッシュコンフィギュレーションを記述します。この設定ファイルは settings.ymlcache 設定が有効な場合のみアクティブになります。

クラスのコンフィギュレーションはキャッシュのために使われ、関連コンフィギュレーションの変更は view_cache_managerfactories.yml 設定ファイルの view_cache セクションで行います。

アプリケーションが作られるとき、symfony はデフォルトの cache.yml ファイルをアプリケーションの config/ ディレクトリに生成します。このファイルでは、アプリケーション全体のキャッシュを記述します (default キーの下)。デフォルトでは、キャッシュはグローバルで false にセットされています:

---
default:
  enabled:     false
  with_layout: false
  lifetime:    86400

デフォルトでは、enabled 設定は false にセットされているので、キャッシュを個別に有効にする必要があります。ほかには、グローバルキャッシュを有効にし、キャッシュする必要のない特定のページでキャッシュを無効にする方法もあります。作業量が少ないほうを選ぶとよいでしょう。

設定ファイルの原則の章で説明したように、cache.yml ファイルでは、コンフィギュレーションカスケードのメカニズムがはたらき、定数を定義することができます。

cache.yml 設定ファイルは PHP ファイルとしてキャッシュされます。処理は ~sfCacheConfigHandler~ クラスによって自動管理されます。

モジュールのためにアプリケーションのデフォルトコンフィギュレーションをオーバーライドするには、モジュールの config/ ディレクトリのなかで cache.yml ファイルを作ります。メインキーはアクションの名前で、プレフィックスの execute をつけません (たとえば executeIndex メソッドであれば index)。名前にプレフィックスのアンダースコア (_) をつければ、パーシャルもしくはコンポーネントもキャッシュできます。

アクションをキャッシュするかどうかを決めるのに、symfony は次の順序で情報を探します:

  • 存在しているのであれば、モジュール設定ファイルでの特定のアクション、パーシャル、コンポーネントのコンフィギュレーション;

  • 存在しているのであれば、モジュール設定ファイルでのモジュール全体のコンフィギュレーション (all キーの下);

  • アプリケーションのデフォルトコンフィギュレーション (default キーの下)

コンフィギュレーションに関わらず、クエリ文字列の GET パラメータで送信されるリクエストや、POSTPUT もしくは DELETE メソッドで投稿されるリクエストはキャッシュされることはけっしてありません。

~enabled~

デフォルト: false

enabled 設定は現在のスコープにおけるキャッシュを有効もしくは無効にします。

~with_layout~

デフォルト: false

with_layout 設定はキャッシュの対象をページ全体 (true) かアクションだけ (false) にするのかを決めます。

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 にセットされており、このことが意味するのは、パーシャルとコンポーネントがどこでインクルードされても出力がつねに同じであるということです。

パラメータのセットが異なればキャッシュが異なるのは明らかです。