在.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>" ) ;
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)