C#应用程序缓存块

时间:2010-11-17 02:16:49

标签: c# caching web-applications

我正在为C#寻找有效的缓存策略。我正在构建一个MVC应用程序但是我的一个查询针对的是一个带有状态等的历史表。不用说,查询是高度嵌套和复杂的,我不想每次有人访问网站时运行它,所以我决定缓存数据(结果或表本身)。我不想将我的缓存存储在托管堆中,因为世界上的垃圾收集问题是代际GC和缓存的常见问题。我想知道,缓存应用程序块(http://msdn.microsoft.com/en-us/library/ff650180.aspx)是否使用非托管内存(在托管堆上?)。有没有办法直接通过本机IO访问内存?还有其他值得研究的缓存工具吗?

3 个答案:

答案 0 :(得分:2)

。我知道的.Net缓存框架:

虽然我已经研究了各种缓存框架,但我担心除了System.Web.Caching之外我对它们中的任何一个都没有太多经验 - 这对我们的目的来说很好。

答案 1 :(得分:2)

我强烈建议您查看AppFabric缓存。我刚刚为我的MVC应用程序实现了它,效果很好。

我用这个博客开始:

http://www.hanselman.com/blog/InstallingConfiguringAndUsingWindowsServerAppFabricAndTheVelocityMemoryCacheIn10Minutes.aspx

如果您需要一些代码示例,请告诉我。

答案 2 :(得分:2)

您还可以浏览分布式缓存选项,例如MemcachedSharedCache。我们已经将SharedCache用于我们的一个项目,并且运行良好。正如其中一个答案所示,您也可以尝试使用AppFabric。如果你正在寻找基于微软的解决方案,那么微软就会发布名为Velocity的分布式缓存技术。

希望这有帮助。