2013-05-29 50 views
1

我設置footer.phtml內的Magento的會話變量如下圖所示Magento的會話/高速緩存可充當真正古怪

<?php Mage::getSingleton('core/session')->setPopup('1'); ?> 

然後,我通過寫footer.phtml的接下來的幾行一個JavaScript訪問它。

var val = <?php echo Mage::getSingleton('core/session')->getPopup()?>; 

但是當我嘗試從我的網站的主頁訪問這個會話變量時,它顯示爲空白。手段沒有設置。但如果我轉到其他頁面,則可以看到會話變量設置爲我想要的值。 然後,如果我回到主頁,變量作爲空白(未設置)了。

任何想法可能是什麼原因造成這種有趣的行爲?

注意:我在我的本地代碼空間中覆蓋了我的Footer.php(塊文件),並在承包商中註釋掉所有兌現的東西。這是爲了確保footer.phtml不被緩存。

但我們也啓用了全頁面緩存,不知道這會導致問題,如果是的話如何解決,如果沒有禁用全頁面緩存

回答

1

管理中加入以下2行app/code/local/Mage/Page/Block/Html/Footer.php來解決這個問題,

protected function _construct() 
{ 
    //Disabling footer from getting cashed by FPC 
    $cache = Mage::app()->getCacheInstance(); 
    $cache->banUse('full_page'); 
} 
+0

它很好,你回答了你自己的問題。它會幫助有類似問題的人。我想添加一些東西。難道不能這樣做:你只分離出你不想緩存的代碼並讓頁腳緩存,因爲這最終會影響性能? –

+1

@DushyantJoshi是的,我認爲打孔技術是做這件事的技術,但是隨着時間的推移,尋找這個選項不是一種選擇:)。可能會晚一點...我會嘗試爲我的一些動態內容做一個打孔。 – Thanu