Jak mogę wyłączyć pamięć podręczną dla określonej sekcji lub bloku


31

Opracowałem funkcjonalność koszyka górnego paska na froncie sklepu, która wyświetla trzy ostatnie produkty dodane do koszyka. Działa to świetnie, gdy pamięć podręczna jest wyłączona, ale po włączeniu pamięci podręcznej pokazuje dziwną sumę częściową w górnym koszyku i dziwne produkty w koszyku.

Zasmuciło mnie to: „(

Wiem, że tak się dzieje z powodu pamięci podręcznej. Czy jest coś, co mogę wyłączyć pamięć podręczną tylko dla tej sekcji? Próbowałem wyłączyć blokową pamięć podręczną HTML i sprawdziłem, czy to działa świetnie, ale stwierdziłem, że w kategorii flat występują nieokreślone problemy, gdy blokowany HTML jest wyłączony.


2
Czy rozwiązałeś swój problem? W jaki sposób? Podziel się z nami szczegółami. Dzięki!
Fabian Blechschmidt

Odpowiedzi:


32

Możesz spróbować

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

lub

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

ustawić na zero.

Ale prawdopodobnie lepiej jest używać ajax.

Jest dobry artykuł na temat nulllub 0znaczeniahttp://blog.kyp.fr/make-a-clean-sweep-of-commons-magento-cache_lifetime-workarounds-usage-in-cache-block-policy/ (link jest zepsuty)


hmm użycie ajax może rozwiązać problem. Spróbuję tego dzięki za twoją pomoc.
ravisoni

2
Myślałem null= nigdy nie buforuj i 0= buforujesz na stałe?
zyskuje

1
null= nigdy nie buforuj, prawda. Nie jestem jednak pewien, czy można argumentować wartość za nullpomocą <action>dyrektywy.
Dmytro Zavalkin

2
<action method="setCacheLifetime"><s>null</s></action>pracował dla mnie. TNX!
ruuter 26.04.13

6
Ustawienie czasu życia pamięci podręcznej na „0” nie wyłącza pamięci podręcznej. Wyłącznie „null” wyłączy to!
Anna Völkl

9

Możesz wyłączyć pamięć podręczną w getChildHtml (). Tak wygląda podpis:

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

To powinno załatwić sprawę:

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

próbowałem tego .. tak naprawdę mam kod w top.phtml to nie działa w tym przypadku
ravisoni 19.04.2013

To również może być zbuforowane, więc myślę, że nie przyniosłoby to większego efektu. Czy jest szansa na wyciągnięcie go poza tę część? Nie sądzę, żeby były inne opcje ...
Rick Kuipers

9

W konkretnym pliku xml. Powiedz catalog.xml

W tym dla konkretnego bloku odniesienia W tym bloku ustaw limit akcji pamięci podręcznej na null

Przykład pliku 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>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.