Caution: You are browsing the legacy symfony 1.x part of this website.
SymfonyWorld Online 2020
100% online
30+ talks + workshops
Live + Replay watch talks later

cache.yml 設定ファイル

1.4
Symfony version
1.2
Language

ビューレイヤーのキャッシュコンフィギュレーションは cache.yml ファイルのなかで記述します。settings.yml ファイルのなかで cache 設定が有効になっている場合にかぎり、この設定ファイルは有効です。

tip

クラスのコンフィギュレーションはキャッシュに使われ、関連するコンフィギュレーションを変更する場所は factories.yml ファイルの view_cacheview_cache_manager セクションです。

デフォルトでは、cache.yml ファイルはアプリケーションの config/ ディレクトリに配置されています。アプリケーション全体におけるキャッシュの要件はこのファイルに記述します (default キーの下)。デフォルトでは、グローバルなキャッシュは無効です。

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 パラメータをともなうリクエストや、POSTPUT もしくは 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

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