HttpRuntime.Cache和HttpContext.Current.Cache之间的区别?

HttpRuntime.CacheHttpContext.Current.Cache什么区别?

我从http://theengineroom.provoke.co.nz/archive/2007/04/27/caching-using-httpruntime-cache.aspxfind以下详细信息;

对于caching,我看着使用HttpContext.Current.Cache,但在阅读其他博客后,我发现使用HttpContext的caching使用HttpRuntime.Cache来做实际的caching。 直接使用HttpRuntime的优点是它总是可用的,例如,在控制台应用程序和unit testing中。

使用HttpRuntime.Cache很简单。 对象可以存储在caching中,并通过string进行索引。 随着一个关键和caching对象的另一个重要参数是到期时间。 该参数设置对象从caching中删除之前的时间。

这里是你的好链接。

另一个好的资源。

使用HttpContext进行caching使用HttpRuntime.Cache来进行实际的caching。 直接使用HttpRuntime的优点是它始终在控制台应用程序和unit testing中可用。

使用HttpRuntime.Cache比使用HttpContext.Current.Cache简单易用。正如前面所说的,对象可以存储在caching中,并被一个string索引。另外在unit testing和控制台HttpRuntime这个可用。

这里是一个使用HttpRuntime.Cache的例子。

 public static XmlDocument GetStuff(string sKey) { XmlDocument xmlCodes; xmlCodes = (XmlDocument) HttpRuntime.Cache.Get( sKey ); if (xmlCodes == null) { xmlCodes = SqlHelper.ExecuteXml(new dn("Nodes", "Node"), "Get_Stuff_From_Database", sKey); HttpRuntime.Cache.Add(sKey, xmlCodes, null, DateTime.UtcNow.AddMinutes(1.0), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Normal, null); } return xmlCodes; } 

这个例子实际上做了什么:


GetStuff方法需要一个string参数,用于从数据库中检索一组项目。 该方法首先检查由参数键索引的XmlDocument是否在caching中。 如果是这样,它只是返回这个对象,如果没有,它会查询数据库。 从数据库中检索到文档后,将其放入caching。 如果在规定的时间内再次调用这个方法,它将得到对象而不是打到数据库。