我正在为C#寻找有效的缓存策略。我正在构建一个MVC应用程序但是我的一个查询针对的是一个带有状态等的历史表。不用说,查询是高度嵌套和复杂的,我不想每次有人访问网站时运行它,所以我决定缓存数据(结果或表本身)。我不想将我的缓存存储在托管堆中,因为世界上的垃圾收集问题是代际GC和缓存的常见问题。我想知道,缓存应用程序块(http://msdn.microsoft.com/en-us/library/ff650180.aspx)是否使用非托管内存(在托管堆上?)。有没有办法直接通过本机IO访问内存?还有其他值得研究的缓存工具吗?
答案 0 :(得分:2)
。我知道的.Net缓存框架:
虽然我已经研究了各种缓存框架,但我担心除了System.Web.Caching
之外我对它们中的任何一个都没有太多经验 - 这对我们的目的来说很好。
答案 1 :(得分:2)
我强烈建议您查看AppFabric缓存。我刚刚为我的MVC应用程序实现了它,效果很好。
我用这个博客开始:
如果您需要一些代码示例,请告诉我。
答案 2 :(得分:2)
您还可以浏览分布式缓存选项,例如Memcached或SharedCache。我们已经将SharedCache用于我们的一个项目,并且运行良好。正如其中一个答案所示,您也可以尝试使用AppFabric。如果你正在寻找基于微软的解决方案,那么微软就会发布名为Velocity的分布式缓存技术。
希望这有帮助。