2011-01-14 74 views
1

我有一個菜單組件的頁面。該菜單使用不同的CSS類標記活動元素。組件模板的上下文緩存

現在我想緩存每個菜單項頁面。不同的頁面來自同一模塊/動作,差異僅在於ID​​。

問題是菜單隻緩存一次,但我需要每個菜單項的緩存版本。

我剛剛嘗試過緩存選項「contextual:true」,但我認爲這不起作用,因爲主模板(barSuccess)總是相同的。

你們有什麼想法,該如何解決這個問題?

回答

2

您可以通過將sf_cache_key到分力緩存鍵:

include_component('menu', 'main', array('sf_cache_key' => $sf_params->get('item'))); 

這樣組件將被緩存「項目」的每一個值。

的另一種方法是使用不同的參數集:

include_component('menu', 'main', array('item' => $sf_params->get('item'))); 

這樣組件將用於項目的每一個值被緩存,以及。

在第一個解決方案中,您強制緩存密鑰。當您需要自定義邏輯來決定是否生成緩存時,它非常有用。

第二種解決方案依賴於事實,即對傳遞給它的每個參數值組合都可以緩存組件(當然可以有多個組合)。

+0

Thx爲您的答案。是否可以在組件操作中設置此參數? 我在問,因爲我在layout.php中使用了一些組件,而且我不想在layout.php中生成緩存鍵。 – ownking 2011-01-17 09:21:16