2012-08-17 74 views
1

我在Symfony 1.4 Doctrine 1.2中構建了一個音樂應用程序。我正在使用插槽來定製我的佈局標題中的facebook api元標記。例如,當我瀏覽歌曲頁面時,該歌曲的showSuccess將具有如下所示的插槽,該插槽使用動態信息填充佈局標題元標記,具體取決於它是哪首歌曲。如何在Symfony 1.4插槽中禁用緩存動態信息

<?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代替view_cache/results_cache和APC代碼爲sfPatternRouting緩存(如果有幫助的話)。

回答

0

我找到了問題的原因。這不是緩存值的插槽。它實際上是Facebook緩存元標記信息。該插槽提供了最新的值,但Facebook元標記只是在Facebook中顯示舊數據。爲了清除Facebook元標記的緩存,我必須手動輸入到facebook調試器(linter)的鏈接。

手動輸入每個鏈接以清除緩存不是一個可擴展的解決方案,所以我決定不把動態數據放在facebook元標記中。

更多的是解決方案。很想知道如何根據需要自動清除Facebook緩存。