Come posso disabilitare la cache per una particolare sezione o blocco


31

Ho sviluppato una funzionalità del carrello della barra superiore per la facciata del negozio che visualizza gli ultimi tre prodotti aggiunti al carrello, funziona perfettamente quando la cache è disabilitata, ma quando abilito la cache mostra strani subtotali nel carrello superiore e strani prodotti nel carrello.

Questo mi rende triste: '(

So che sta succedendo a causa della cache. È possibile disabilitare la cache solo per questa sezione? Ho provato a disabilitare la cache del blocco html e controllo ora che funzionava benissimo ma ho scoperto che la categoria flat sta avendo problemi non specificati quando il blocco HTML è disabilitato.


2
Hai risolto il tuo problema? Come? Si prega di condividere i dettagli con noi. Grazie!
Fabian Blechschmidt,

Risposte:


32

Puoi provare

    <reference name="needed block">
        <action method="setCacheLifetime"><s>null</s></action>
    </reference>

o

    <reference name="needed block">
        <action method="setCacheLifetime" />
    </reference>

per impostarlo su null.

Ma probabilmente è meglio usare ajax.

C'è un buon articolo su nullo 0significatohttp://blog.kyp.fr/make-a-clean-sweep-of-commons-magento-cache_lifetime-workarounds-usage-in-cache-block-policy/ (link non funzionante)


hmm l'uso di Ajax potrebbe risolvere il problema. Proverò questo grazie per il tuo aiuto.
Ravisoni,

2
Ho pensato null= mai cache e 0= cache permanentemente?
benmarks

1
null= mai cache, giusto. Tuttavia, non sono sicuro che sia possibile discutere di valore nullcon la <action>direttiva.
Dmytro Zavalkin,

2
<action method="setCacheLifetime"><s>null</s></action>ha funzionato per me. TNX!
ruuter,

6
L'impostazione della durata della cache su "0" non disabilita la cache. Solo "null" lo disabiliterà!
Anna Völkl

9

È possibile disabilitare la cache in getChildHtml (). Ecco come appare la firma:

public function getChildHtml($name = '', $useCache = true, $sorted = false)

Questo dovrebbe fare il trucco:

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

ho provato questo .. in realtà è stato codificato in top.phtml in questo caso non funziona
Ravisoni

Potrebbe anche essere memorizzato nella cache, quindi credo che non avrebbe molto effetto. C'è una possibilità che tu possa estrarlo da quella parte? Non credo che ci siano altre opzioni ...
Rick Kuipers,

9

Nel file XML specifico. Pronuncia catalog.xml

In quello per un particolare blocco di riferimento In quel blocco impostare l'azione del limite della cache su null

Esempio di catalog.xml

<reference name="right">
    <block type="catalog/navigation" name="catalog.product.cat.related" as="related_cat" template="catalog/navigation/list_cat.phtml" after="-" >
        <action method="unsetData"><key>cache_lifetime</key></action>
        <action method="unsetData"><key>cache_tags</key></action>
    </block>
</reference>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.