Как я могу отключить кэш для определенного раздела или блока


Я разработал функцию корзины верхней панели для магазина, которая отображает последние три продукта, добавленные в корзину, это отлично работает, когда кэш отключен, но когда я включаю кэш, он показывает странный промежуточный итог в верхней корзине и странные товары в корзине.

Это меня огорчает:'(

Я знаю, что это происходит из-за кэша. Есть ли что-нибудь, что я могу отключить кэш только для этого раздела? Я попытался отключить блокировку html-кэша и теперь проверяю это работал отлично, но я обнаружил, что в категории flat возникают неопределенные проблемы, когда блок HTML отключен.

Author: 7ochem, 2013-04-19

3 answers

Вы можете попробовать

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

Или

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

, чтобы установить для него значение null.

Но, вероятно, лучше использовать ajax.

Есть хорошая статья о null или 0 значении http://blog.kyp.fr/make-a-clean-sweep-of-commons-magento-cache_lifetime-workarounds-usage-in-cache-block-policy/ ( связь разорвана)

 33
Author: Dmytro Zavalkin, 2018-04-06 10:20:39

Вы можете отключить кэш в getChildHtml(). Вот как выглядит подпись:

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

Это должно сработать:

echo $this->getChildHtml('block', false);
 11
Author: Rick Kuipers, 2013-04-19 14:37:43

В конкретном xml-файле. Скажи catalog.xml

В этом для конкретного справочного блока В этом блоке установите действие ограничения кэша равным нулю

Пример 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>
 9
Author: Vinay Shah, 2016-03-11 10:54:53