Привет, профессионалы Magento!
Я использовал механизм Magentos Block Cache для повышения производительности на страницах продуктов. Он отлично работал на Magento CE 1.6.2, но теперь я обновляюсь до CE 1.9.0.1, и кэширование блоков не работает с новыми ключами форм Magentos.
Страницы продукта все еще кэшируются, но они естественным образом кэшируются, включая новый ключ формы в действиях форм. Когда другой пользователь пытается добавить товары в корзину, это не сработает, потому что ключ формы другого пользователя был закэширован. Таким образом, товар не добавляется, а корзина остается пустой.
Есть ли способ внедрить ключ формы в кешированный код или другой способ кеширования страниц продукта?
Методы кэширования в моем расширенном Mage_Catalog_Block_Product_View выглядят так:
protected function _construct()
{
$this->addData(array(
'cache_tags' => array(Mage_Catalog_Model_Product::CACHE_TAG . "_" . $this->getProduct()->getId()),
));
}
public function getCacheKey()
{
if (!$this->hasData('cache_key')) {
//$cacheKey = LAYOUTNAME_STORE+ID_PRODUCT+ID
$cacheKey = $this->getNameInLayout().'_STORE'.Mage::app()->getStore()->getId().'_PRODUCT'.$this->getProduct()->getId();
$this->setCacheKey($cacheKey);
}
return $this->getData('cache_key');
}
public function getCacheLifetime()
{
if($this->getNameInLayout()!='product.info') return null;
if(!$this->cacheEnabled()) return null;
return 9999999999;
}
public static function cacheEnabled() {
return true;
}