我最近收到的项目包含多个没有MVC结构的Web应用程序。对于初学者,我创建了一个包含主要业务逻辑的库(DLL)。问题在于缓存 - 如果我使用当前的Web上下文缓存对象,那么最终可能会出现重复缓存(因为每个应用程序的Web上下文都不同)。
我目前正在考虑使用单例模式实现一个简单的缓存机制,允许不同的网站(也就是不同的应用程序域)分享他们的“缓存智慧”。
我想知道解决这个问题的最佳方法是什么。
编辑:我只使用一台服务器(有多个应用程序)。
答案 0 :(得分:1)
根据您要缓存的数据的类型和大小,我建议:
总的来说,我会看看我的要求,并确保真正需要一个包罗万象的缓存,编写代码来维护其状态(并调整其资源消耗)并不比直接进入数据库。 如果你想要缓存的大多数东西是静态页面,或静态和&组合。动态内容,我会考虑利用IIS / ASP.NET的页面级缓存。
答案 1 :(得分:1)
根据您的可扩展计划,我有两个不同的建议。无论您选择哪种后端缓存,我都会建议您首先实现从缓存中抽象出来的adapter pattern层,因此它会限制您对缓存的依赖性,并使您能够在以后交换它。
如果要通过添加Web场(多个应用程序服务器)进行扩展,请查看速度。微软将在4.0中打包它,但它目前是CPT3,并且非常易于使用。
如果您不打算迁移到多服务器系统,请使用HttpContext.Current.Cache
答案 2 :(得分:0)
听起来像你应该看看Build Better Data-Driven Apps With Distributed Caching。本文描述了一个来自Microsoft(代号为Velocity)的新的分布式缓存。
答案 3 :(得分:0)
我也被允许使用SharedCache,它看起来与我正在寻找的架构完全相同:Single Instance Caching。