【发布时间】:2012-01-19 02:35:04
【问题描述】:
我有一个 sql 查询(存储过程),在结果显示在 webgrid 之前大约需要 8-10 秒才能返回。关于在 asp.net-mvc3 中进行缓存的最佳性能实践是什么,这样用户就不必每次都花费 8-10 秒来加载该数据(较少优化查询)?
【问题讨论】:
标签: asp.net asp.net-mvc linq asp.net-mvc-3 entity-framework
我有一个 sql 查询(存储过程),在结果显示在 webgrid 之前大约需要 8-10 秒才能返回。关于在 asp.net-mvc3 中进行缓存的最佳性能实践是什么,这样用户就不必每次都花费 8-10 秒来加载该数据(较少优化查询)?
【问题讨论】:
标签: asp.net asp.net-mvc linq asp.net-mvc-3 entity-framework
您可以使用MemoryCache 类将此查询的结果存储在某个键下。关键可能是查询条件的散列(如果有的话)。这里是 MSDN 上的some guides,了解如何使用它。
在实现缓存时,请记住此缓存默认存储在内存中。这意味着如果您在 Web 场中运行此应用程序,使用分布式缓存可能会更有趣,以便场的所有节点共享相同的缓存数据。这可以通过使用一些分布式缓存解决方案扩展ObjectCache 类来完成。例如memcached 是一个流行的,它有.NET provider。另一个分布式缓存解决方案是AppFabric。
【讨论】:
它正在缓存这个动作。
[OutputCache(Duration = 300)]
public ActionResult Action(){
//some operation
return View()
}
【讨论】:
此存储过程背后的基础数据多久更改一次?如果比较少,可以使用非常好的特性——SqlCacheDependency
http://msdn.microsoft.com/en-us/library/ms178604.aspx
这样你的重型 SP 只会在需要的时候被调用,并且结果会被尽可能长的缓存。
【讨论】: