Magento volledige paginacache uitschakelen/omzeilen op één pagina

Hoe kan ik FPC uitschakelen of omzeilen voor een enkele pagina? Ik wil geen perforeren gebruiken omdat er meerdere blokken op de pagina staan ​​die ik dynamisch wil hebben en ik zou liever één config/class aanpassen om aan te geven dat de hele pagina niet in de cache moet worden geplaatst (vergelijkbaar met het gedrag van de checkout) ).

Mijn begrip van FPC was dat het niet werd gebruikt voor "sessiegebruikers" (ingelogd, toegevoegd aan winkelwagen, enz ...). Ik zie echter FPC-pagina's beïnvloeden wanneer een gebruiker is aangemeld. Als ik FPC uitschakel, werkt de pagina naar wens.

11

3 antwoord

Hier is de oplossing voor het uitschakelen van FPC voor een specifieke controller (kan ook worden uitgebreid tot specifieke actie).

Maak eerst een waarnemer om te luisteren op de controller_action_predispatch -gebeurtenis:

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');
    }
}

Then add the following to your config.xml file for the module. This goes in the section:


    
        
            
                YOURMODULE/observer
                processPreDispatch
            
        
    

Nu zal Magento je pagina elke keer weergeven en FPC omzeilen voor het verzoek.

18
toegevoegd
kan iemand me vertellen, wat moet ik schrijven in plaats van "uw unieke ID"? Dankje :)
toegevoegd de auteur Chester, de bron
wat als ik het voor de CMS-pagina wil gebruiken? Ik kan het xml-gedeelte gebruiken in update xml van de CMS-pagina, maar ik knpw niet wat ik moet schrijven in de klassentag
toegevoegd de auteur Nickool, de bron
Thx, ik graveerde rond de code van FPC, tot nu toe ziet dit er het beste uit. Het interessante instappunt kan Mage_PageCache_Model_Processor zijn, maar dit kan niet worden genegeerd, omdat het wordt geïnitialiseerd met nieuw .. (ten minste aan het begin ... de tweede keer dat een sigleton wordt gebruikt ...)
toegevoegd de auteur WonderLand, de bron
@Chester literally_anything_you_want_as_long_as_it_is_unique. Hoewel meestal moet u dit voorvoegsel met de korte naam van uw module.
toegevoegd de auteur Joe Constant, de bron

Ik ben net klaar met het worstelen met Magento EE FPC die geen kernboodschappen weergeeft op Cached Cached pagina's. Kernboodschappen werkten goed op cachecategorie- en productpagina's maar niet op CMS-pagina's. Ik vond dat door een bepaalde parameter aan een pagina door te geven, je kunt forceren dat die pagina's in plaats van de server uit de cache worden gegenereerd.

gevonden in: app/code/core/Enterprise/PageCache/Model/Processor/Default.php

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

Het is dus mogelijk om een ​​koppeling te maken met een HTTP GET-querytekenreeks die de FPC zou omzeilen.

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

Dit hielp bij het oplossen van een probleem dat ik had toen een plugin doorverwees naar een verwijzende URL met een sessiebericht, maar als de verwijzende URL een CMS-pagina was, werd het bericht niet weergegeven totdat een niet-CMS-pagina werd bekeken.

5
toegevoegd
Over het algemeen is het zo dat wanneer u te maken hebt met EE FPC caching-berichten omdat u ze waarschijnlijk probeert uit te voeren met getGroupedHtml (). U moet just toHtml() gebruiken om ervoor te zorgen dat de Enterprise vasthoudt voor berichten die correct werken.
toegevoegd de auteur wlvrn, de bron
Mee eens dat dit een mogelijk probleem kan zijn voor grote catalogi. Lijkt erop dat een aangepaste module om dit gedrag te veranderen de manier zou zijn.
toegevoegd de auteur Ian at Xantek, de bron
Winkels met honderdduizenden producten zullen zware serverbelastingen ervaren als FPC wordt overbrugd, waardoor dit een mogelijke vector is voor DDOS-aanvallen. Is er een manier om dit gedrag te voorkomen?
toegevoegd de auteur Alex, de bron

Magento's FPC is een gecompliceerd beest.

Ik heb dit overwonnen met behulp van de volgende tutorial:

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

Dit is misschien wat je 'Hole Punching' noemt, maar het is de enige manier die ik heb gevonden om het te overwinnen.

0
toegevoegd
Daarom zijn antwoorden met één link slecht. De URL is dood, je antwoord is nutteloos.
toegevoegd de auteur Tim Bezhashvyly, de bron
Ja, dat is hole punching. Ik heb geprobeerd de instructies van de link te volgen, maar ik krijg steeds het volgende bericht: "Fatale fout: maximaal functie-nestniveau van '200 bereikt, afbreken!' (het nummer doet er niet toe, ik heb geprobeerd het maximum te verhogen en het blijft maar slaan) wanneer FPC is ingeschakeld. Het lijkt erop dat er ergens een lus is verdwenen. Als ik FPC uitschakel, werkt alles weer goed.
toegevoegd de auteur Joe Constant, de bron