У мене була ця проблема з EE 1.14.2, і схоже, що ця ж проблема виникла в CE 1.9.2. Я задокументував свою проблему та вирішення цього питання щодо ДП .
В основному завдяки наступному коду, що додається до конструктора Mage_Cms_Block_Block
:
$this->setCacheTags(array(Mage_Cms_Model_Block::CACHE_TAG));
$this->setCacheLifetime(false);
Статичні блоки CMS тепер кешовані. Проблема виникає в тому, як формується інформація про кеш-ключ. Це повертається до Mage_Core_Block_Abstract
поведінки використання імені блоків у макеті. Якщо блок не додано з макетом, наприклад, на сторінці cms, це ім'я не існує. Це може призвести до того, що статичні блоки поділять один і той же ключ кешу і змішуються в кеші.
Моє рішення полягало в тому, щоб перекрити Mage_Cms_Block_Block
клас і встановити інформацію про кеш-ключ на основі ідентифікатора блоку та поточного сховища.
/**
* Override cms/block to add cache key. This started being a problem as of EE 1.14.2 and CE 1.9.2 when the _construct
* method was added which turns on caching for cms blocks
*/
class Mysite_Cms_Block_Block extends Mage_Cms_Block_Block
{
/**
* If this block has a block id, use that as the cache key.
*
* @return array
*/
public function getCacheKeyInfo()
{
if ($this->getBlockId()) {
return array(
Mage_Cms_Model_Block::CACHE_TAG,
Mage::app()->getStore()->getId(),
$this->getBlockId(),
(int) Mage::app()->getStore()->isCurrentlySecure()
);
} else {
return parent::getCacheKeyInfo();
}
}
}
Очевидно , що це потрібно буде додати в свій власний модуль з config.xml
файлової і блок корекції і т.д. Як альтернативу можна скопіювати Mage_Cms_Block_Block
на локальний код пулу і додати ключ кешу там.
Ви можете побачити нові рядки, додані в 1.9.2 тут