5

サービスから解析する YAML ファイルがいくつかあります。

しかし、ページがヒットするたびに、それらの YAML ファイルが解析され、PHP 配列に変換されます。Symfony はデフォルトの YAML ファイルをキャッシュに保持しているため、ページがヒットするたびにすべての yaml ファイルを解析するわけではないことを理解しています。

ここでのベストプラクティスは何だろうと思っていました。YAML ファイルを一度だけ解析して Symfony2 のキャッシュに保存する方法はありますか? もしそうなら、正しい方向に向けていただけませんか?

4

1 に答える 1

3

それはすべて、キャッシュをどのように行うかによって異なります。

  • HTTP キャッシュは、Web コンテキスト内で、これらのファイルを解析して配列に追加するアクションの特定の出力が比較的静的である場合にのみ意味があります。これらの条件が両方とも満たされている場合、それが最善の方法です。

  • APCを使用してキャッシングを簡単に行うことができます。これにより、変数の内容のキャッシュが非常に簡単になります。Doctrine は APC に関するキャッシュの抽象化を提供するか、ネイティブの PHP 関数を使用できます。

config.yml で

 services:
        cache:
            class: Doctrine\Common\Cache\ApcCache

次に、コントローラーまたはサービスで:

if ($yamlArray = $this->get('cache')->fetch('foo')) {
    $yamlArray = unserialize($yamlArray);
} else {
    // do the work
    $this->get('cache')->save('foo', serialize($yamlArray));
}
  • 独自のキャッシング サービスを作成し、それを Symfony キャッシュ コマンドにフックする

キャッシュ ウォーマーの作成の詳細

cache_clearer の詳細(追加されていますが、十分に文書化されていません)。

于 2013-04-08T19:00:58.483 に答える