asp.net - 在多个网站之间共享缓存

标签 asp.net

我们有大约 50 个网站,在不同的应用程序池中运行,它们从一个公共(public)缓存数据库(使用 Microsoft Enterprise Library Caching 应用程序 block )读取数据。

我们目前有一个控制台应用程序,每天凌晨 3 点填充缓存。但是,我们想要摆脱这个应用程序并让缓存自动刷新过期的项目,使用 ICacheItemRefreshAction 接口(interface)。

我们打算在 50 个网站的每个网站的 Global.asax 中创建我们的缓存对象。但是,我担心的是,如果我们在 Global.asax 中设置缓存过期策略,那么 50 个网站中的每一个都会触发刷新操作,从而导致数据被重新缓存 50 次。

我们不希望只有 1 个网站设置过期策略,因为这样其他 49 个网站将依赖于这 1 个网站,这是一种架构禁忌。

鉴于这些限制 - 有什么建议吗?

最佳答案

坚持你所拥有的。

如果控制台应用程序在凌晨 3 点填充缓存的性能可以接受,请继续使用它。如果您需要更频繁/更不频繁地刷新缓存,您可以随时更改调用它的粒度。

如果您希望 ICacheItemRefreshAction 有机会启用更精细的粒度(即一些项目在 24 分钟后从缓存中掉出,一些在 24 小时后掉出缓存),那么请考虑让控制台应用程序更灵活,以便它可以被告知缓存的哪些部分缓存失效并重新填充。

您的问题中遗漏的一点有助于完善答案的信息是您为什么要摆脱控制台应用程序,也许更重要的是,为什么您想转而使用 ICacheItemRefreshAction 界面吗?

关于asp.net - 在多个网站之间共享缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5274703/

相关文章:

ASP.NET MVC 经验/成功案例 [2010]

c# - 支持 JWT key 轮换的 Bearer Token Authentication 的 Owin 中间件

.net - Facebook 和 asp.net 成员(member)资格的整合

c# - 更新到 ASP.NET Core 2 后无法获取配置部分

asp.net - 如何防止篡改查询字符串?

PROD 中的 asp.net secret

jquery - 使用 jQuery 动态改变进度条的颜色

c# - 关于构建强类型类来管理 asp.net mvc 的 URL 的想法

asp.net - 以某种方式在 WCF 服务中存储单词?

c# - 下载文件的代码