Domanda

Vedi sotto per una riscrittura di questa domanda.

Un sito Magento EE 1.13.1.0 su cui sto lavorando è avere alcuni problemi con gli stendardi (alimentato da widget.) I banner si stanno memorizzando nella cache quando FPC è acceso e persino posizionando la chiamata al blocco banner in un placholder/contenitore non scaduto sta ancora tirando un blocco di banner memorizzato nella cache.

Dopo aver parlato con il supporto di Magento, fondamentalmente hanno detto che non potevano fare a meno, ma che avrei potuto esaminare i prodotti/upsell correlati per vedere come rimangono non ucnabili.

So che il blocco catalog.product.related Ed è un blocco per bambini catalog.product.related.item non sono entrambi incapaci. (O meglio, che esistono nella cache ma sono aggiornati su ogni carico di pagina, non che io capisca la differenza.) Ma guardando Enterprise_PageCache_Model_Container_CatalogProductItem Non riesco a vedere di cosa si tratta in questo che impedisce a questi blocchi di memorizzare nella cache indefinitamente. Soprattutto per quanto riguarda Enterprise_PageCache_Model_Container_Banner, che sembra molto simile.

Qualcuno può dirmi come posso convincere gli striscioni a non memorizzare affatto o darmi un modo per estrarre il contenuto per un banner dal database direttamente e bypassare la cache?

Modificare:

Il problema con cui ho dovuto affrontare è questo: in Magento EE c'è un sistema banner legato al sistema di widget nel CMS. La homepage del sito in questione aveva 4 banner/widget assegnati ai blocchi. Quei blocchi sono stati quindi chiamati nel modello di homepage in questo modo:

<!-- page.xml -->
<block type="core/text_list" name="home_banner_carousel_one" as="home_banner_carousel_one">
    <label>Homepage Banner Carousel One</label>
</block>
<block type="core/text_list" name="home_banner_carousel_two" as="home_banner_carousel_two">
    <label>Homepage Banner Carousel Two</label>
</block>
<block type="core/text_list" name="home_banner_carousel_three" as="home_banner_carousel_three">
    <label>Homepage Banner Carousel Three</label>
</block>
<block type="core/text_list" name="home_banner_carousel_four" as="home_banner_carousel_four">
    <label>Homepage Banner Carousel Four</label>
</block>

<!-- page/home.phtml -->
<ul class="home-slider">
    <li><?php echo $this->getChildHtml('home_banner_carousel_one', false); ?></li>
    <li><?php echo $this->getChildHtml('home_banner_carousel_two', false); ?></a></li>
    <li><?php echo $this->getChildHtml('home_banner_carousel_three', false); ?></a></li>
    <li><?php echo $this->getChildHtml('home_banner_carousel_four', false); ?></a></li>
</ul>

Il problema era quello home.phtml è stato scritto per nascondere quella sezione se il primo blocco della giostra era vuoto. Come questo:

$carouselOne = $this->getChildHtml('home_banner_carousel_one', false);
if (empty($carouselOne)) {
    echo 'Nothing here';
} else {
    echo $carouselOne;
}

Questo è stato scritto senza riguardo per la cache di pagina intera a Magento. Quando quella cache è stata accesa, questa logica si è improvvisamente rotta.

La mia soluzione era quella di spostare questa logica nel proprio blocco, quindi provare a scatenare quel blocco "avvolgimento" e tutti i blocchi della giostra all'interno.

Semplicemente aggiungendo <action method="setCacheLifetime" /> alla definizione del blocco in page.xml Non ha avuto alcun effetto sulla cache della pagina intera aziendale.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top