2011-12-06 13 views
10

मैं एक पृष्ठ के लिए एफपीसी को कैसे अक्षम या बाईपास कर सकता हूं? मैं छेद-पंचिंग का उपयोग नहीं करना चाहता क्योंकि पेज पर कई ब्लॉक हैं जिन्हें मुझे गतिशील होने की आवश्यकता है और मैं यह निर्दिष्ट करने के लिए एक कॉन्फ़िगर/कक्षा को संशोधित करना चाहूंगा कि पूरे पृष्ठ को कैश नहीं किया जाना चाहिए (चेकआउट के व्यवहार के समान)।एक पृष्ठ पर Magento पूर्ण पृष्ठ कैश अक्षम/बाईपास

एफपीसी की मेरी समझ यह थी कि इसका उपयोग "सत्र उपयोगकर्ताओं" (लॉग इन, कार्ट में जोड़ा गया आदि) के लिए नहीं किया गया था। हालांकि, जब मैं उपयोगकर्ता लॉग इन करता हूं तो मैं एफपीसी प्रभावित पृष्ठों को देख रहा हूं। अगर मैं एफपीसी अक्षम करता हूं, तो पृष्ठ वांछित के रूप में काम करता है।

उत्तर

17

यहां एक विशिष्ट नियंत्रक के लिए एफपीसी को अक्षम करने का समाधान है (विशिष्ट कार्रवाई के लिए भी बढ़ाया जा सकता है)।

पहले controller_action_predispatch घटना पर सुनने के लिए एक पर्यवेक्षक बनाने के लिए:

public function processPreDispatch(Varien_Event_Observer $observer) 
{ 
    $action = $observer->getEvent()->getControllerAction(); 

    // Check to see if $action is a Product controller 
    if ($action instanceof Mage_Catalog_ProductController) { 
     $cache = Mage::app()->getCacheInstance(); 

     // Tell Magento to 'ban' the use of FPC for this request 
     $cache->banUse('full_page'); 
    } 
} 

फिर मॉड्यूल के लिए अपने config.xml फ़ाइल में निम्न जोड़ें। यह <frontend> अनुभाग में होता है:

<events> 
    <controller_action_predispatch> 
     <observers> 
      <YOUR_UNIQUE_IDENTIFIER> 
       <class>YOURMODULE/observer</class> 
       <method>processPreDispatch</method> 
      </YOUR_UNIQUE_IDENTIFIER> 
     </observers> 
    </controller_action_predispatch> 
</events> 

अब Magento अनुरोध के लिए हर बार और बाईपास पांचवें वेतन आयोग अपने पृष्ठ को सेवा करेंगे।

+0

क्या होगा यदि मैं इसे सीएमएस पृष्ठ के लिए उपयोग करना चाहता हूं? मैं सीएमएस पेज के अपडेट एक्सएमएल में एक्सएमएल भाग का उपयोग कर सकता हूं लेकिन मुझे कक्षा टैग – Nickool

+0

Thx में लिखना नहीं है, मैं एफपीसी के कोड के आसपास खोद गया हूं, अब तक यह सबसे अच्छा तरीका है।दिलचस्प प्रविष्टि बिंदु 'Mage_PageCache_Model_Processor' हो सकता है लेकिन इसे ओवरराइड नहीं किया जा सकता है, क्योंकि इसे 'नया ..' के साथ शुरू किया गया है (कम से कम शुरुआत में ... दूसरी बार एक सिग्लेटन का उपयोग किया जाता है ...) – WonderLand

+0

कोई मुझे बता सकता है, "आपके अद्वितीय पहचानकर्ता" के बजाय मुझे क्या लिखना चाहिए? thx :) – Chester

1

Magento का एफपीसी एक जटिल जानवर है।

मैं इस पर काबू पाने की है निम्नलिखित ट्यूटोरियल का उपयोग:

http://oggettoweb.com/blog/customizations-compatible-magento-full-page-cache/

यह वही है आप के रूप में "छेद छिद्रण" की चर्चा करते हुए कर रहे हैं हो सकता है, लेकिन यह एक ही तरीका है कि मैं इसे दूर करने के लिए मिल गया है है ।

+0

हां, वह छेद पंचिंग है। मैंने लिंक से दिए गए निर्देशों का पालन करने का प्रयास किया, लेकिन मुझे यह मिल रहा है: "घातक त्रुटि: '200' का अधिकतम फ़ंक्शन घोंसला स्तर, निरस्त हो रहा है!" (संख्या कोई फर्क नहीं पड़ता। मैंने अधिकतम बढ़ाने की कोशिश की है और यह केवल इसे मारता रहता है) जब एफपीसी सक्षम होता है। ऐसा लगता है कि एक लूप कहीं जंगली चला गया है। अगर मैं एफपीसी बंद कर देता हूं, तो सब कुछ ठीक काम करता है। –

+1

यही कारण है कि एकल लिंक उत्तर खराब हैं। यूआरएल मर चुका है, आपका जवाब बेकार है। –

+0

https://web.archive.org/web/20140218205557/http://oggettoweb.com/blog/customizations-compatible-magento-full-page-cache/ –

4

कैग किए गए सीएमएस पृष्ठों पर कोर संदेश प्रदर्शित नहीं करते हुए बस Magento EE FPC के साथ कुश्ती हो गई। कोर संदेश कैश श्रेणी और उत्पाद पृष्ठों पर ठीक काम करते थे लेकिन सीएमएस पेज नहीं। मैंने किसी पृष्ठ पर एक निश्चित पैरामीटर पारित करके पाया है कि आप कैश से बाहर सर्वर के बजाय जेनरेट किए जाने वाले पृष्ठों को मजबूर कर सकते हैं।

में पाया: एप्लिकेशन/कोड/कोर/उद्यम/पेजकैश/मॉडल/प्रोसेसर/default.php

/** 
* Disable cache for url with next GET params 
* 
* @var array 
*/ 
protected $_noCacheGetParams = array('___store', '___from_store'); 

तो यह एक लिंक एक HTTP GET क्वेरी स्ट्रिंग नज़र अंदाज़ होता है बनाने के लिए संभव है पांचवें वेतन आयोग।

http://www.domain.com/?___store 

यह एक समस्या मैं हो रही थी गया एक प्लगइन एक सत्र संदेश के साथ एक चर्चा करते हुए यूआरएल के लिए पुनः निर्देशित किया गया था लेकिन हल में मदद मिली है, तो रेफरर एक सीएमएस पेज संदेश जब तक एक गैर सीएमएस पेज देखा गया था प्रदर्शित नहीं किया जाएगा ।

+1

एफपीसी को छोड़कर सैकड़ों हजारों उत्पादों के साथ स्टोर भारी सर्वर लोड का अनुभव करेंगे, जो डीडीओएस हमलों के लिए एक संभावित वेक्टर बनाता है। क्या इस व्यवहार को रोकने का कोई तरीका है? – Alex

+0

सहमत हैं कि यह बड़े कैटलॉग के लिए एक संभावित मुद्दा हो सकता है। ऐसा लगता है कि इस व्यवहार को बदलने के लिए एक कस्टम मॉड्यूल तरीका होगा। –

+0

आम तौर पर ईई एफपीसी कैशिंग संदेशों से निपटने पर ऐसा इसलिए होता है क्योंकि आप शायद getGroupedHtml() के साथ उन्हें आउटपुट करने का प्रयास कर रहे हैं। यह सुनिश्चित करने के लिए कि एंटरप्राइज़ होस्टिंग के लिए एंटरप्राइज़ होल्डिंग सही ढंग से काम करता है, आपको केवल HTML() का उपयोग करने की आवश्यकता है। – wlvrn

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