MVC3数据缓存技术

时间:2011-12-13 07:04:43

标签: asp.net asp.net-mvc linq asp.net-mvc-3 entity-framework

我有一个sql查询(存储过程),在结果显示在webgrid中之前需要大约8-10秒才能返回。有关在asp.net-mvc3中进行缓存的性能的最佳实践是什么,因此用户不必每次都加载8-10秒来加载该数据(更少优化查询)?

3 个答案:

答案 0 :(得分:11)

您可以使用MemoryCache类将此查询的结果存储在某个键下。密钥可以是查询标准的哈希值(如果有的话)。以下是MSDN上关于如何使用它的some guides

实现缓存时请记住,默认情况下,此缓存存储在内存中。这意味着,如果您在Web场中运行此应用程序,则使用分布式缓存可能会更有趣,以便场的所有节点共享相同的缓存数据。这可以通过使用一些分布式缓存解决方案扩展ObjectCache类来完成。例如,memcached是一个受欢迎的版本,它有.NET provider。另一种分布式缓存解决方案是AppFabric

答案 1 :(得分:3)

它正在缓存此操作。

[OutputCache(Duration = 300)]
public ActionResult Action(){

//some operation

return View()
}

答案 2 :(得分:2)

此存储过程背后的底层数据发生变化的频率如何?如果相对较少,您可以使用非常好的功能 - SqlCacheDependency

http://msdn.microsoft.com/en-us/library/ms178604.aspx

这样,只有在需要时才会调用重SP,结果将尽可能地缓存。