在 Orchard 站点中,输出缓存可以在模块更新期间保留吗?

In an Orchard site, can the output cache be preserved during module updates?

该站点有 7,000 多页内容。当大多数页面都被缓存时,站点可以可接受地处理其流量。例如,当为模块部署代码更新时,缓存会被刷新。 (这也可能发生在其他一些事件中,例如服务器重启或应用程序池被回收。)

网站被搜索引擎蜘蛛攻击,搜索引擎蜘蛛会重新编制网站索引,检查它知道的所有页面,并触发为所有页面重建缓存的过程。这将 CPU 固定在 90% 到 98% 之间,并导致网站对所有页面请求的响应缓慢。

有没有办法通过重建或重启来保留输出缓存中的内容?

是的,虽然它需要您使用外部缓存服务器,例如 Redis。默认缓存提供程序使用内存存储,当应用程序池重新启动时,它总是会被重置。最新的 Orchard 版本通过 Orchard.Redis 核心模块支持开箱即用的 Redis。

以上内容适用于业务缓存 (ICacheService) 以及输出缓存。