码迷,mamicode.com
首页 > Web开发 > 详细

HttpRuntime.Cache与HttpContext.Current.Cache

时间:2017-11-08 17:46:48      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:级别   异常   使用   call   code   remove   move   get   dmi   

从MSDN上的解释可以看出,HttpRuntime.Cache是应用程序级别的,而HttpContext.Current.Cache是针对当前WEB上下文定义的。
然而,实际上,这二个都是调用的同一个对象,不同的是:HttpRuntime下的除了WEB中可以使用外,非WEB程序也可以使用。
而HttpContext则只能用在WEB中

插入:
System.Web.HttpContext.Current.Cache.Insert("AuthorizeCode", code, null, DateTime.Now.AddMinutes(5), TimeSpan.Zero);
HttpRuntime.Cache.Insert("AuthorizeCode", code, null, DateTime.Now.AddMinutes(5), TimeSpan.Zero);

获取:
System.Web.HttpContext.Current.Cache.Get("AuthorizeCode")
HttpRuntime.Cache.Get("AuthorizeCode")

移除:
System.Web.HttpContext.Current.Cache.Remove("AuthorizeCode");
HttpRuntime.Cache.Remove("AuthorizeCode");


Add与Insert的不同
HttpRuntime.Cache.Add 存在相同的键会异常,返回缓存成功的对象。
HttpRuntime.Cache.Insert存在相同的键会替换原值,无返回值。
如果您希望某个缓存项目一旦放入缓存后,就不要再被修改,那么调用Add确实可以防止后来的修改操作。而调用Insert方法,则永远会覆盖已存在项。

HttpContext其实是保存在CallContext.HostContext这个属性中
HttpContext并非无处不在!
CallContext.HostContext:获取或设置与当前线程相关联的主机上下文

【当前线程】是个什么意思?
答:
1. 当前线程是指与【当前请求】相关的线程。
2. 在ASP.NET中,有些线程并非总是与请求相关。
感觉有点绕口吗? 不容易理解吗? 还是继续往下看吧。
虽然在ASP.NET程序中,几乎所有的线程都应该是为响应请求而运行的,
但是,还有一些线程却不是为了响应请求而运行,例如:
1. 定时器的回调。
2. Cache的移除通知。
3. APM模式下异步完成回调。
4. 主动创建线程或者将任务交给线程池来执行。

HttpRuntime.Cache与HttpContext.Current.Cache

标签:级别   异常   使用   call   code   remove   move   get   dmi   

原文地址:http://www.cnblogs.com/xiaoweigogo/p/7804687.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!