我们有大约50个在不同应用程序池中运行的网站,这些网站从公共缓存数据库中读取(使用Microsoft Enterprise Library Caching应用程序块)。
我们目前有一个控制台应用程序,它每天凌晨3点填充缓存。但是,我们想要摆脱这个应用程序,并使用ICacheItemRefreshAction接口让缓存自动刷新过期的项目。
我们打算在50个网站的每个网站的Global.asax中创建我们的缓存对象。但是,我担心的是,如果我们在Global.asax中设置缓存过期策略,那50个网站中的每个网站都会触发刷新操作,导致数据被重新缓存50次。
我们不希望只有1个网站设置过期策略,因为其他49个网站将依赖于该1个网站,这是一个禁止架构。
鉴于这些限制 - 任何建议?
答案 0 :(得分:2)
坚持你所拥有的。
如果在凌晨3点填充缓存的控制台应用程序执行可接受,请继续使用它。如果需要更频繁地/更少地刷新缓存,则可以随时更改调用的粒度。
如果你想有机会ICacheItemRefreshAction来实现更精细的粒度(即一些项目在24分钟后掉出缓存,有些在24小时后掉出来),那么考虑使控制台应用程序更加灵活,以便可以告诉它的哪些部分缓存以使其无效并重新填充。
您的问题中缺少的一点信息可用于优化答案为什么要删除控制台应用,或许更重要的是,为什么你想转向使用ICacheItemRefreshAction
界面吗?
答案 1 :(得分:1)
也许您可以查看另一种缓存解决方案,如memcached,NCache或Velocity。
通过它,您可以拥有所有站点共享的缓存。