Magento Cache Warming

时间:2013-01-16 15:44:43

标签: magento caching

我和我的团队正在迅速推出Magento Enterprise Edition的新商店和观点,但我们遇到了缓存问题。需要说明的是,缓存部分本身效果很好。我们有几个复杂的产品需要大约17秒的时间来构建,但是在缓存之后,页面加载了300毫秒,这太棒了!不幸的是,如果我们在任何严重负载(高流量)下清除缓存,我们似乎遇到了缓存未命中风暴,其中每个页面请求都试图填充缓存,导致我们的网页在平均负载超过50时失速。

您有什么建议可以避免这种情况吗?是否有针对新代码部署预缓存缓存的文档最佳实践,甚至只是内容和配置更改?

这可能是相关的,所以我将其包括在内:在单击按钮刷新缓存之后,在刷新过程完成之前,前端的大多数页面都会出现500个错误代码和看似随机的错误消息。知道可能导致什么原因吗?

1 个答案:

答案 0 :(得分:0)

我在保存CMS Block后实施了一个预热缓存的解决方案。您可以利用此解决方案的灵感来针对不同情况(产品保存,CMS块,CMS页面,类别保存等)执行相同的操作

使用观察者cms_block_save_after保存CMS Block后,可以触发此段代码:

/**
 * Clean targeted cache block and warmup if content is provided
 */
public function clearBlockHtmlCache(Varien_Event_Observer $observer)
{

    $block = $observer->getEvent()->getObject();

    $id = $block->getCacheKey();

    // Remove only specific cache block
    Mage::app()->getCacheInstance()->getFrontend()->remove(strtoupper($id));

    // no print, it's ok just warmup cache with filters processing
    $block->toHtml();
}