我有一个sql查询(存储过程),它需要大约8-10秒的时间才能返回结果,然后在webgrid中显示结果。在asp.net-mvc3中,关于缓存的最佳实践是什么,这样用户就不必每次加载数据时都要花费8-10秒的时间(更少地优化查询)?
发布于 2011-12-13 15:06:06
您可以使用MemoryCache类将此查询的结果存储在某个键下。关键字可以是查询条件的散列(如果您有这样的条件)。这里是关于如何使用它的MSDN上的some guides。
实现缓存时,请记住,默认情况下,此缓存存储在内存中。这意味着,如果您在web场中运行此应用程序,使用分布式缓存可能会更有趣,这样场中的所有节点都可以共享相同的缓存数据。这可以通过使用某种分布式缓存解决方案扩展ObjectCache类来实现。例如,memcached是一个很流行的版本,它有.NET provider。另一种分布式缓存解决方案是AppFabric。
发布于 2011-12-13 15:13:40
它正在缓存这个操作。
[OutputCache(Duration = 300)]
public ActionResult Action(){
//some operation
return View()
}
发布于 2011-12-13 17:14:35
这个存储过程背后的底层数据多长时间更改一次?如果相对较少,您可以使用非常好的特性- SqlCacheDependency
http://msdn.microsoft.com/en-us/library/ms178604.aspx
这样,您的繁重的SP将仅在需要时被调用,并且结果将被缓存尽可能长的时间。
https://stackoverflow.com/questions/8485509
复制相似问题