如何在Magento中缓存一个集合?

时间:2010-09-20 20:10:52

标签: magento

我有一个需要很长时间才能加载的集合。我想要的是缓存它(APC,Memcache)。无法缓存整个对象(因为它不能被反序列化并且超过1 MB)。我认为缓存集合数据($ col-> getData())是可行的方法,但我发现无法基于此数组重建对象。有线索吗?

3 个答案:

答案 0 :(得分:4)

集合已经内置了一些缓存,但是它们需要一些提示,所以把它放在集合的构造函数中:

$cache = Mage::app()->getCacheInstance();
$prefix = "SomeUniqueValue";
$this->initCache($cache, $prefix, array(Mage_Catalog_Model_Product::CACHE_TAG));

选择适合集合内容的标签,以便自动刷新。这种方式基于正在执行的查询构建ID,当集合被过滤,排序或分页时最有用 - 它避免了版本冲突。

通常这很难被使用,因为当你检索数据时,你几乎总是最终显示它,可能是HTML,所以有意义的是缓存输出。块缓存被广泛使用并且有更好的文档记录。

答案 1 :(得分:2)

我真的不知道,但我搜索了所有文件名为“Collection.php”的文件名为“cache”的文件,并得到了一些结果。最有希望看的例子可能是Mage_Sales_Model_Entity_Quote_Item_Collection (_getProductCollection()方法。看起来Varien_Data_Collection(任何magento集合的父类)都有一些与缓存相关的方法:initCache() and _getCacheInstance().

不能说我之前使用过它们,但有一天可能会有用。

祝你好运。

答案 2 :(得分:0)

您可以在此处获取更多信息:Can I use Magento's Caching layer as a Key/Value Store?

我会在那里发布更多信息。

相关问题