在.net中引入了Cache借以提高程序执行效率.在程序里使用使用这Cache时可以使用三种方式:
- HttpRuntime.Cache
- Page.Cache
- HttpContext.Current.Cache
我们主要讨论这三种方式到底有什么不同.
首先,在查看Cache的定义时,可以发现,这三个类的Cache是同一个东西.这就表示,不论你使用那种方法在服务器端建立一个缓存,利用其它两种方式都是可以访问到的.实践一下就知道了.
首先,在一页面设置缓存,如下代码
if ( Page.Cache["PageCache"] == null )
{
Page.Cache.Insert("PageCache","This is PageCache") ;
Response.Write( "设置成功!<br>" ) ;
}
if ( HttpContext.Current.Cache["HttpCache"] == null )
{
HttpContext.Current.Cache.Insert("HttpCache","This is HttpCache");
Response.Write( "设置成功!<br>" ) ;
}
if ( HttpRuntime.Cache["HttpRuntimeCache"] == null )
{
HttpRuntime.Cache.Insert("HttpRuntimeCache" , "This is HttpRuntimeCache" ) ;
Response.Write( "设置成功!<br>" ) ;
}
然后,在另一页面通过不同的方式来访问这些已经设置过的缓存.如下代码:
Response.Write( "第一部分:<br>" ) ;
Response.Write( "----利用HttpContext.Current返回的HttpContext访问通过Page.Cache设置的缓存:" ) ;
if ( HttpContext.Current.Cache["PageCache"] != null )
{
Response.Write( "其值为:" +HttpContext.Current.Cache["PageCache"].ToString() +"<br>") ;
}
else
{
Response.Write( "没有访问到!<br>") ;
}
Response.Write( "----利用HttpRuntime.Cach访问通过Page.Cache设置的缓存:" ) ;
if ( HttpRuntime.Cache["PageCache"] != null )
{
Response.Write( "其值为:" +HttpRuntime.Cache["PageCache"].ToString() +"<br>") ;
}
else
{
Response.Write( "没有访问到!<br>") ;
}
Response.Write( "第二部分:<br>" ) ;
Response.Write( "----利用HttpContext.Current返回的HttpContext访问通过HttpRuntime设置的缓存:" ) ;
if ( HttpContext.Current.Cache["HttpRuntimeCache"] != null )
{
Response.Write( "其值为:" +HttpContext.Current.Cache["HttpRuntimeCache"].ToString() +"<br>") ;
}
else
{
Response.Write( "没有访问到!<br>") ;
}
Response.Write( "----利用Page.Cach访问通过HttpRuntime.Cache设置的缓存:" ) ;
if ( Page.Cache["HttpRuntimeCache"] != null )
{
Response.Write( "其值为:" +Page.Cache["HttpRuntimeCache"].ToString() +"<br>") ;
}
else
{
Response.Write( "没有访问到!<br>") ;
}
Response.Write( "第三部分:<br>" ) ;
Response.Write( "----利用HttpRuntime.Cache访问通过HttpContext.Current.Cache设置的缓存:" ) ;
if ( HttpRuntime.Cache["HttpCache"] != null )
{
Response.Write( "其值为:" +HttpRuntime.Cache["HttpCache"].ToString() +"<br>") ;
}
else
{
Response.Write( "没有访问到!<br>") ;
}
Response.Write( "----利用Page.Cach访问通过HttpContext.Current.Cache设置的缓存:" ) ;
if ( Page.Cache["HttpCache"] != null )
{
Response.Write( "其值为:" +Page.Cache["HttpCache"].ToString() +"<br>") ;
}
else
{
Response.Write( "没有访问到!<br>") ;
}
执行的结果与之前的设想是一样的.那么这几种访问缓存的方式到底有什么不一样呢?看下面的代码!
方法一:访问HttpContext.Current.Cache
private void OutHttpContextCacheToString()
{
try
{
if ( HttpContext.Current.Cache["HttpCache"] != null )
{
Response.Write( HttpContext.Current.Cache["HttpCache"].ToString() + "<br>" ) ;
}
else
{
Response.Write( "没有访问到缓存或缓存没有设置!<br>" ) ;
}
}
catch
{
Response.Write( "发生错误!<br>" ) ;
}
}
方法二:访问Httpruntime.Cache
private void OutHttpRumtimeCacheToString()
{
if ( HttpRuntime.Cache["HttpRuntimeCache"] != null )
{
Response.Write( HttpRuntime.Cache["HttpRuntimeCache"].ToString() + "<br>" ) ;
}
else
{
Response.Write( "没有访问到缓存或缓存没有设置!<br>" ) ;
}
}
Response.Write( "利用线程通过HttpRuntime.Cache来访问缓存中的数据,访问结果为:<br>" ) ;