2012-05-08 5 views
2

У меня есть требование о том, что я хочу отключить кеширование для какой-либо категории на странице со списком продуктов и на странице просмотра продукта.
У меня есть поиск этого, но я не нашел ответного ответа, можно ли это сделать в пурпуре? Я попробовал файл list.phtml и view.phtmlОтключить кеширование некоторых файлов в magento

+0

Вы имеете в виду целые страницы или только некоторые части страниц? Например, 'list.phtml' часть страницы категории? –

+0

попробуйте здесь http://stackoverflow.com/questions/8405232/disable-bypass-magento-full-page-cache-on-single-page –

+0

Нет, я хочу кэшировать только файл list.phtml, и эта ссылка не работает для me –

ответ

0

Вы можете переопределить блок и установить действительно низкое или ложное время кеширования.

Например, вы можете скопировать блок в локальное пространство имен. Например, если вы хотите, чтобы отключить кэширование на навигационном блоке можно скопировать

app\code\core\Mage\Catalog\Block\Navigation.php 

в

app\code\local\Mage\Catalog\Block\Navigation.php 

Это перекроет блок Magento, и позволяет обновлять его с нашими изменениями.

Затем вы можете изменить механизм кеширования для этого блока или большинства других блоков в соответствии с вашими потребностями. Ниже приведен пример отключения кэша для этого блока.

protected function _construct() 
{ 
    $this->addData(array(
     'cache_lifetime' => false, // or 1 or something tiny 
    )); 
} 

В качестве альтернативы, добавить что-то вроде этого:

public function getCacheLifetime() 
{ 
    return null; // or 1 or what ever.. 
} 

Вы также можете изменить кэш «Key» используется в качестве уникального идентификатора при сохранении страницы, это ключ кэша по умолчанию для блоков шаблона:

/** 
* Get cache key informative items 
* 
* @return array 
*/ 
public function getCacheKeyInfo() 
{ 
    return array(
     'BLOCK_TPL', 
     Mage::app()->getStore()->getCode(), 
     $this->getTemplateFile(), 
     'template' => $this->getTemplate() 
    ); 
} 

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

В зависимости от используемого блока вы можете добавить дополнительные параметры, чтобы сделать кеш более или менее целевым.

+0

Эндрю не могли бы вы рассказать, где внести эти изменения? Благодарю. – Muk

+0

Я обновлю свой ответ для вас :) – Andrew

+0

Спасибо Andrew, я столкнулся с проблемами в моей навигации из-за кеша «Блокировка HTML-вывода». Я использую Magento Enterprise edition. Вы можете увидеть мою проблему по этой ссылке «http: // www.magentocommerce.com/boards/viewthread/298493/ « – Muk

Смежные вопросы