Як я можу відключити кеш для певного розділу або блоку


31

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

Це мене сумує: '(

Я знаю, що це відбувається через кеш. Чи можу я вимкнути кеш лише для цього розділу? Я спробував вимкнути кеш-код кеш-файлів і перевірити, чи працює це чудово, але я виявив, що категорія "плоскі" має не визначені проблеми, коли блоковий HTML відключений.


2
Ви вирішили свою проблему? Як? Будь ласка, поділіться деталями з нами. Спасибі!
Фабіан Блешшмідт

Відповіді:


32

Ви можете спробувати

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

або

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

встановити його на нуль.

Але, напевно, краще використовувати аякс.

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


hmm використання ajax може вирішити проблему. Я спробую це подякувати за вашу допомогу.
ravisoni

2
Я думав null= ніколи не кешувати і 0= кешувати постійно?
орієнтири

1
null= ніколи не кешуйте, правильно. Однак я не впевнений, що можна аргументувати значення nullз <action>директивою.
Дмитро Завалкін

2
<action method="setCacheLifetime"><s>null</s></action>працював на мене. TNX!
ruuter

6
Якщо встановити термін служби кешу на "0", кеш не вимикається. Тільки "null" відключить його!
Анна Вьоклл

9

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

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

Для цього слід зробити фокус:

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

я спробував це .. насправді є закодований у top.phtml це не працює в такому випадку
ravisoni

Це може бути також кешоване, так що я думаю, це не мало би великого ефекту. Чи є шанс, що ти зможеш витягнути його за межі тієї частини? Я не думаю, що є інші варіанти ...
Rick Kuipers

9

У конкретному XML-файлі. Скажіть каталог.xml

У цьому для конкретного опорного блоку В цьому блоці встановіть дію кеш-межі на null

Приклад каталогу.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>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.