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