Xml magento禁用价格块的缓存
在我的项目中,我们使用的是Magento Enterprise Edition 1.14.1。直接从数据库动态更改商店中的价格。因此,问题是Magento会缓存所有内容的完整页面缓存,这样更改就不会在前端受到影响。因此,我们决定禁用该特定块的缓存。我知道它可以在布局文件中完成。我签入layout catalog.xml,在块中找到了它Xml magento禁用价格块的缓存,xml,magento,caching,layout,block,Xml,Magento,Caching,Layout,Block,在我的项目中,我们使用的是Magento Enterprise Edition 1.14.1。直接从数据库动态更改商店中的价格。因此,问题是Magento会缓存所有内容的完整页面缓存,这样更改就不会在前端受到影响。因此,我们决定禁用该特定块的缓存。我知道它可以在布局文件中完成。我签入layout catalog.xml,在块中找到了它 <block type="catalog/product_price_template" name="catalog_product_price_templ
<block type="catalog/product_price_template" name="catalog_product_price_template" />
所以在这里我不知道如何禁用它。我已尝试在app/etc/local.xml中将缓存的fife时间设置为null
并在layout/catalog.xml中尝试
<block type="catalog/product_price_template" name="catalog_product_price_template" >
<action method="setCacheLifetime" />
</block>
试过了,
<block type="catalog/product_price" name="Mage_Catalog_Block_Product_Price">
<action method="setCacheLifetime"><value>false</value></action>
</block>
及
但是没有运气
我在layout/bundle.xml文件中发现了一些其他价格块。我们也在使用捆绑产品。所以我们也必须禁用这个缓存?任何帮助都将不胜感激。谢谢 您可以看到这个链接跟踪方法被添加到这个文件Mage/Catalog/Block/Product/Price.php中
protected function _construct()
{
$this->addData(
array('cache_lifetime' => false,)
);
}
您可以看到这个链接跟踪方法被添加到这个文件Mage/Catalog/Block/Product/Price.php中
protected function _construct()
{
$this->addData(
array('cache_lifetime' => false,)
);
}
试一试
HTH试试看
HTH在深入研究magento缓存技术之后,我遇到了一个决定。在此之前,我想描述一下我得到的。基本上有两种解决方案可以禁用特定块或缓存标记的缓存 一,。使用块禁用缓存 这类似于设置缓存的生存期
<reference name="needed block">
<action method="setCacheLifetime"><s>null</s></action>
</reference>
而且这种类型的缓存将只清除块缓存。
所以我们不能使用这个解决方案
二,。打孔:
Magento还有另一个默认功能,即我们可以使用缓存标记覆盖FPC进程
Magento按标记名保存缓存。因此,我们可以在页面呈现之前获取该标记,并且可以禁用再次缓存该标记。因此,每次页面加载时,该标记都不会被缓存
我以前试着用observer core_block_abstract_to_html_来实现它
但是没有为price定义的price的CACHE_标记
我们可以使用_构造函数直接在price类中设置缓存的生存时间,如
$this->addData(array(
‘cache_lifetime’=> false,
‘cache_tags’ => array(Mage_Core_Model_Store::CACHE_TAG, Mage_Catalog_Product_Price::CACHE_TAG)
));
正如我前面提到的,价格没有缓存标签。所以我们也不能用这个把戏
但我发现一件事,如果我们从管理员那里保存产品,那么更改会立即反映在前端。所以我在这方面做了更多的研究,我找到了解决办法
Magento调用以下控制操作
Mage_Adminhtml_Catalog_ProductController::saveAction()
这个将调用下面的方法
Mage::getModel('catalogrule/rule')->applyAllRulesToProduct($productId)
如果您看到此函数,它们将清除缓存并重新编制索引
public function applyAllRulesToProduct($product)
{
.......
$this->getResource()->applyAllRules($product);
$this->_invalidateCache();
Mage::getSingleton('index/indexer')->processEntityAction(
new Varien_Object(array('id' => $product->getId())),
Mage_Catalog_Model_Product::ENTITY,
Mage_Catalog_Model_Product_Indexer_Price::EVENT_TYPE_REINDEX_PRICE
);
return $this;
}
在我的例子中,我只使用以下代码
$object->setPrice(555);
Mage::getModel('catalogrule/rule')->applyAllRulesToProduct($productId);
$object->save();
在深入研究magento缓存技术之后,我遇到了一个决定。在此之前,我想描述一下我得到的。基本上有两种解决方案可以禁用特定块或缓存标记的缓存 一,。使用块禁用缓存 这类似于设置缓存的生存期
<reference name="needed block">
<action method="setCacheLifetime"><s>null</s></action>
</reference>
而且这种类型的缓存将只清除块缓存。
所以我们不能使用这个解决方案
二,。打孔:
Magento还有另一个默认功能,即我们可以使用缓存标记覆盖FPC进程
Magento按标记名保存缓存。因此,我们可以在页面呈现之前获取该标记,并且可以禁用再次缓存该标记。因此,每次页面加载时,该标记都不会被缓存
我以前试着用observer core_block_abstract_to_html_来实现它
但是没有为price定义的price的CACHE_标记
我们可以使用_构造函数直接在price类中设置缓存的生存时间,如
$this->addData(array(
‘cache_lifetime’=> false,
‘cache_tags’ => array(Mage_Core_Model_Store::CACHE_TAG, Mage_Catalog_Product_Price::CACHE_TAG)
));
正如我前面提到的,价格没有缓存标签。所以我们也不能用这个把戏
但我发现一件事,如果我们从管理员那里保存产品,那么更改会立即反映在前端。所以我在这方面做了更多的研究,我找到了解决办法
Magento调用以下控制操作
Mage_Adminhtml_Catalog_ProductController::saveAction()
这个将调用下面的方法
Mage::getModel('catalogrule/rule')->applyAllRulesToProduct($productId)
如果您看到此函数,它们将清除缓存并重新编制索引
public function applyAllRulesToProduct($product)
{
.......
$this->getResource()->applyAllRules($product);
$this->_invalidateCache();
Mage::getSingleton('index/indexer')->processEntityAction(
new Varien_Object(array('id' => $product->getId())),
Mage_Catalog_Model_Product::ENTITY,
Mage_Catalog_Model_Product_Indexer_Price::EVENT_TYPE_REINDEX_PRICE
);
return $this;
}
在我的例子中,我只使用以下代码
$object->setPrice(555);
Mage::getModel('catalogrule/rule')->applyAllRulesToProduct($productId);
$object->save();
Magento 1.9.2.1
我的解决办法是加上:
<action method="unsetData"><key>cache_lifetime</key></action>
<action method="unsetData"><key>cache_tags</key></action>
Magento 1.9.2.1
我的解决办法是加上:
<action method="unsetData"><key>cache_lifetime</key></action>
<action method="unsetData"><key>cache_tags</key></action>
除了这个问题,你还可以试试
<reference name="footer">
<action method="setCacheLifetime"></action>
</reference>
这会使setCacheLifetime为空。根据你的问题,你没有查出来。在上找到了解决方案。那里的作者说
这是因为Varien_Object->_调用可以方便地处理缺少的参数,并用null替换它们,幸运的是,这正是我们在这里需要的
除了这个问题,你还可以试试
<reference name="footer">
<action method="setCacheLifetime"></action>
</reference>
这会使setCacheLifetime为空。根据你的问题,你没有查出来。在上找到了解决方案。那里的作者说
这是因为Varien_Object->_调用可以方便地处理缺少的参数,并用null替换它们,幸运的是,这正是我们在这里需要的
对不起,我看见你了
我试过了。您确定您的布局文件正确吗?是否确实删除了缓存以查看效果?您还可以重写setCacheLifetime方法,以检查给定的xml句柄使其被忽略。抱歉,我看到您已经尝试过了。您确定您的布局文件正确吗?是否确实删除了缓存以查看效果?您还可以重写setCacheLifetime方法,以检查给定的xml句柄使其忽略。您将此添加到哪个文件?在哪个标签里面?你把这个添加到哪个文件?在什么标签里面?谢谢你的输入。但是我已经尝试了所有的可能性。它不起作用。谢谢你的意见。但是我已经尝试了所有的可能性。它不起作用。