我和我的团队正在Magento企业版上迅速推出新的存储和视图,但我们遇到了缓存问题。需要明确的是,缓存部分本身工作得很好。我们有几个复杂的产品,大约需要17秒来构建,但在其缓存后,页面加载只需300ms,这真是太棒了!不幸的是,如果我们在任何严重的负载(高流量)下清除缓存,我们似乎正在经历缓存未命中风暴,其中每个页面请求都试图填充缓存,导致我们的webhead在平均负载高于50的情况下停止工作。
你有什么建议来避免这种情况吗?是否有为新代码部署预热缓存或仅针对内容和配置更改预热缓存的最佳实践?
这可能是相关的,所以我将包括它:在单击按钮刷新缓存之后,在刷新过程完成之前,前端芯片上的大多数页面都有500个错误代码和看似随机的错误消息。你知道是什么原因造成的吗?
发布于 2016-09-13 23:52:56
我实现了一个解决方案,在CMS块保存后预热缓存。您可以从此解决方案中获得灵感,在不同情况下执行相同的操作(产品保存、CMS块、CMS页面、类别保存等)
这段代码可以在使用观察者cms_block_save_after
保存CMS块后触发
/**
* 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();
}
https://stackoverflow.com/questions/14362263
复制相似问题