3

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

你有什么避免这种情况的建议吗?是否有记录为新代码部署甚至只是内容和配置更改预热缓存的最佳实践?

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

4

1 回答 1

0

我实现了一个在保存 CMS 块后预热缓存的解决方案。您可以从这个解决方案中汲取灵感,针对不同的情况(产品保存、CMS 块、CMS 页面、类别保存等)执行相同的操作

这段代码可以在 CMS 块保存后使用观察者触发cms_block_save_after

/**
 * 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();
}
于 2016-09-13T15:52:55.880 回答