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

时间:2009-05-14 14:29:04

标签: asp.net

HttpRuntime.CacheHttpContext.Current.Cache之间的区别是什么?

3 个答案:

答案 0 :(得分:64)

我从http://theengineroom.provoke.co.nz/archive/2007/04/27/caching-using-httpruntime-cache.aspx

中找到以下详细信息
  

对于缓存,我调查了使用   HttpContext.Current.Cache但之后   阅读其他博客我发现了   使用HttpContext进行缓存   HttpRuntime.Cache做的实际   缓存。使用的好处   HttpRuntime直接就是它   总是可用的,例如,在   控制台应用程序和单元   测试

     

使用HttpRuntime.Cache很简单。   对象可以存储在缓存中   由字符串索引。随着一个   key和缓存另一个的对象   重要的参数是到期日   时间。此参数设置时间   在从对象中删除对象之前   高速缓存中。

<强> Here is good link for you.

Another good resource.

答案 1 :(得分:19)

使用HttpContext进行缓存使用HttpRuntime.Cache进行实际缓存。直接使用HttpRuntime的优势在于它始终可用于控制台应用程序和单元测试。

答案 2 :(得分:1)

使用HttpRuntime.Cache比使用HttpContext.Current.Cache更简单。正如已经说过的,对象可以存储在缓存中并由字符串索引。也可以在单元测试和控制台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采用字符串参数,该参数用于从数据库中检索一组项目。该方法首先检查由参数键索引的XmlDocument是否在缓存中。如果是,它只返回该对象,如果不是,则查询数据库。从数据库中检索文档后,将其放入缓存中。如果在规定的时间内再次调用此方法,它将获取对象而不是访问数据库。