2012-02-05 11 views
5

मैं एक Magento 1.6 साइट है, जो घर पृष्ठ के सीएमएस "लेआउट अद्यतन एक्सएमएल" क्षेत्र के अंदर निम्नलिखित एक्सएमएल है पर काम कर रहा हूँ कैशिंग से Magento को रोकने में असमर्थ:एक ब्लॉक

<reference name="content"> 
    <block type="catalog/navigation" name="catalog.category.home" as="homecategory" template="catalog/category/homecategory.phtml" /> 
</reference> 

टेम्पलेट के रूप में यादृच्छिक श्रेणियां दिखाता है, मैं इस ब्लॉक के लिए कैशिंग अक्षम करना चाहता हूं। ऐसा करने के लिए, मैं getChildHtml साथ ('उप-ब्लॉक टेम्पलेट', झूठी) का उपयोग कर प्रयास करें:

(homecategory है $ this-> getChildHtml ('random_categories', गलत) अपने टेम्पलेट में)

<reference name="content"> 
    <block type="catalog/navigation" name="catalog.category.home" as="homecategory" useCache="false" template="catalog/category/homecategory.phtml"> 
     <block type="catalog/navigation" name="catalog.category.home.randcats" as="random_categories" useCache="false" template="catalog/category/random.phtml" /> 
    </block> 
</reference> 

तो अब मैं अटक गया हूं, सोच रहा हूं कि मैं 'झूठी' तर्क का उपयोग करने के बावजूद उस ब्लॉक के कैशिंग को क्यों रोक नहीं सकता।

+0

'useCache = "false" विशेषता जैसी कोई चीज़ नहीं है। –

+0

क्या आपने Admin पैनल> सिस्टम> कैश प्रबंधन में Magento कैश अक्षम किया था? – sondoha

+0

आपको अपने ब्लॉक के लिए पूर्ण पृष्ठ कैश छेद पंचिंग लागू करना चाहिए। इस ट्यूटोरियल को देखें [यह ट्यूटोरियल] (http://tweetorials.tumblr.com/post/10160075026/ee-full-page-cache-hole-punching) और [SO पर यह प्रश्न] (http://stackoverflow.com/ प्रश्न/8126548/कोशिश कर-मिल-गतिशील सामग्री होल से मुक्का मारा-थ्रू-magentos-पूरे पृष्ठ-कैश)। – Zyava

उत्तर

3

क्या आपने इसे नया कस्टम ब्लॉक प्रकार बनाकर और कैशिंग फ़ंक्शंस को ओवरलोड करके इसे मजबूर करने का प्रयास किया है? Mage_Catalog_Block_Product_List_Random वर्ग का विस्तार और एक खाली छद्म निर्माता बनाने के लिए:

protected function _construct() {} 

यह ब्लॉक वस्तु को कैश टैग, जीवन भर, और अन्य मेटाडाटा जोड़ने इनहेरिट नहीं कर पाएगा। फिर आप कैश कुंजी जानकारी को भी अधिभारित कर सकते हैं ताकि यह किसी भी मौजूदा (या सक्षम) कैश ब्लॉक का उपयोग न करे। उदाहरण के लिए:

public function getCacheKeyInfo() 
{ 
    return array(
     'MY_CACHE_TAG', 
     Mage::app()->getStore()->getId(), 
     (int)Mage::app()->getStore()->isCurrentlySecure(), 
     Mage::getDesign()->getPackageName(), 
     Mage::getDesign()->getTheme('template') 
    ); 
} 
+0

धन्यवाद, मैं कोशिश करूँगा। हालांकि मैं अभी भी फायरहोज से पी रहा हूं, इसलिए इस कस्टम ब्लॉक को बनाने से कुछ परीक्षण और त्रुटि हो सकती है। – Excalibur

+1

शायद http://inchoo.net/ecommerce/magento/magento-block-caching/ को देखने का प्रयास करें और देखें कि क्या यह आपको रास्ते में मदद करता है? – Jona

+1

जोना, उस लेख के लिंक के लिए धन्यवाद। मैंने देखा कि यह कहां इंगित करता है कि '$ यह-> addData (सरणी ('cache_lifetime' => 'false'))' केस है (जो श्रेणी/नेविगेशन के लिए डिफ़ॉल्ट है, इसका मतलब है कि कैश रीफ्रेश स्वचालित रूप से हर 2 घंटे (7200 सेकंड)।यह मेरी आवश्यकताओं के लिए काफी अच्छा है, और प्रदर्शन कारणों से कैशिंग के मुकाबले शायद बेहतर है। – Excalibur

5

मुझे यह वही समस्या थी। मैं इसे ब्लॉक प्रकार के प्रकार = "सूची/नेविगेशन" के साथ कुछ करना है। मैंने अन्य प्रकार के ब्लॉक पर कैशिंग कार्य को अक्षम करने को देखा है।

phtml फ़ाइल परिवर्तन: सुनिश्चित करें कि दूसरे परम झूठी

echo $this->getChildHtml('topCategoriesList',false); 

xml फ़ाइल परिवर्तन है: ब्लॉक

को इन कार्यों जोड़े यहाँ इस ब्लॉक प्रकार के लिए एक ठीक है और इस समस्या है
<block type="catalog/navigation" name="topCategoriesList" as="topCategoriesList" template="catalog/navigation/categorylist.phtml"> 
    <action method="unsetData"><key>cache_lifetime</key></action> 
    <action method="unsetData"><key>cache_tags</key></action> 
</block> 
+1

यह केवल मेरे लिए एक्सएमएल का उपयोग कर काम किया। – user3409662

संबंधित मुद्दे