Symfony 1.4 Doctrine 1.2 で音楽アプリケーションを構築しています。スロットを使用して、レイアウト ヘッダーの Facebook API メタタグをカスタマイズしています。たとえば、曲のページをブラウズするshowSuccess
と、曲の には以下のようなスロットがあり、曲に応じてレイアウト ヘッダーのメタ タグに動的な情報が入力されます。
<?php slot('fb_metaproperty_title') ?>
<meta property="og:site_name" content="abc"/>
<meta property="og:title" content="<?php echo $songs['song_name'].' by '.$songs['full_name'] ?>"/>
<meta property="og:type" content="song" />
<meta property="og:description" content="This song is currently ranked <?php echo $songOverallRank?>th" />
<meta property="og:url" content="<?php echo $linktosongpage ?>"/>
<meta property="og:image" content="<?php echo $images[0]?>"/>
<?php end_slot() ?>
問題は、キャッシュがオンになっていて、$songOverallRank
変数がスロットにキャッシュされているため、ランク値が古くなっていることです (頻繁に変更されるため)。同じ$songOverallRank
変数は、スロットのすぐ下 (ただし外側) のコードで最新です。スロット値だけがキャッシュされ、何らかの理由で古くなっています。
キャッシュ値を手動で削除する方法についてsymfonyのドキュメントを確認しましたが、かなり面倒です。
スロットのキャッシュを無効にする簡単な構成または方法はありますか? スロットがキャッシュされておらず、変数がテンプレートの残りの部分 (最新の値を持つ) とまったく同じようにプルされることを確認するソリューションはありますか?
それが役立つ場合は、キャッシュsfMemcacheCache
に forview_cache/results_cache
と APC を使用しています。sfPatternRouting