我和我的团队正在迅速推出Magento Enterprise Edition的新商店和观点,但我们遇到了缓存问题。需要说明的是,缓存部分本身效果很好。我们有几个复杂的产品需要大约17秒的时间来构建,但是在缓存之后,页面加载了300毫秒,这太棒了!不幸的是,如果我们在任何严重负载(高流量)下清除缓存,我们似乎遇到了缓存未命中风暴,其中每个页面请求都试图填充缓存,导致我们的网页在平均负载超过50时失速。
您有什么建议可以避免这种情况吗?是否有针对新代码部署预缓存缓存的文档最佳实践,甚至只是内容和配置更改?
这可能是相关的,所以我将其包括在内:在单击按钮刷新缓存之后,在刷新过程完成之前,前端的大多数页面都会出现500个错误代码和看似随机的错误消息。知道可能导致什么原因吗?
答案 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();
}