研究缓存机制

 Asp.netforums中使用了两级缓存来处理一个用户在不同版面上的权限,第一级使用HttpRuntime.Cache,可是用户在不同的请求中从运行时提供的缓存机制中提高效率,第二级是HttpContext.Current,它是建立在第一级缓存之上,用于用户在同一个请求期间的缓存,这个缓存在用户请求一次结束后就不存在了,第一级缓存则可存在一个定义的时间内,但是这个时间是硬编码的,我们可以根据需在web.config中定义这个时间。
也就是说 HttpRuntime.Cache是全局性的,而HttpContext.Current.Cache是针对具体用户的请求而言的
两者的使用范围是不同的。看globals.cs 文件.
 首先先看看MSDN上对HttpContextHttpRuntime 的定义,

  1. HttpContext:   封装有关个别 超文本传输协议 请求的所有 超文本传输协议 特定的信息。
  2. HttpRuntime:  为当前应用程序提供一组 ASP.NET 运行时服务

        从定义看一个是针对一个特定的请求的,一个是对应整个ASP.NET应用程序而言.再看看HttpContext.Cache对象和HttpRuntime.Cache对象的定义:

  1. HttpContext.Cache:  获取当前应用程序的 Cache。
  2. HttpRuntime.Cache: 为当前 超文本传输协议 请求获取 Cache 对象。

        这里获取的Cache会不会一个是针对个人,一个是针对应用程序的呢? 实际情况不是的,无论是HttpContext.Cache 还是 HttpRuntime.Cache实际上调用的都是同一个Cache对象.其实从MSDN中对System.Web.Caching.Cache的说明也可以看出"对于每个应用程序域均创建该类的一个实例,并且只要对应的应用程序域保持活动,该实例便保持有效。",从"应用程序域"这里我们似乎可以猜测可能HttpContext.Cache仅仅就是调用了HttpRuntime.Cache而已,而且这样可以保持HttpContext.Cache和HttpRuntime.Cache的一致性.查看一下HttpContext.Cache 和 HttpRuntime.Cache的实现代码(如下):

  1. HttpContext.Cache
    public Cache Cache{      get      {            return HttpRuntime.Cache;      }}
  2. HttpRuntime.Cache
    public static Cache Cache{      get      {            return HttpRuntime._theRuntime._cache.CachePublic;      }} 
这里可以清楚的看到, HttpContext.Cache 和 HttpRuntime.Cache 实际上调用的是同一个Cache了.
 
HttpContext 构造函数 已重载。初始化 HttpContext 类的新实例。 

公共属性
AllErrors 获取在处理 超文本传输协议 请求的过程中累积的错误数组。
Application 为当前 超文本传输协议 请求获取 HttpApplicationState 对象。
ApplicationInstance 为当前 超文本传输协议 请求获取或设置 HttpApplication 对象。
Cache 为当前 超文本传输协议 请求获取 Cache 对象。
Current 为当前 超文本传输协议 请求获取 HttpContext 对象。
Error 获取在处理 超文本传输协议 请求的过程中累积的第一个错误(如果有)。
Handler 为当前 超文本传输协议 请求获取或设置 IHttpHandler 对象。
IsCustomErrorEnabled 获取一个值,该值指示是否已为当前 超文本传输协议 请求启用自定义错误。
IsDebuggingEnabled 获取一个值,该值指示当前 超文本传输协议 请求是否处于调试模式。
Items 获取可用于在 超文本传输协议 请求过程中在 IHttpModule 和 IHttpHandler 之间组织和共享数据的键值集合。
Request 为当前 超文本传输协议 请求获取 HttpRequest 对象。
Response 为当前 超文本传输协议 响应获取 HttpResponse 对象。
Server 获取提供用于处理 Web 请求的方法的 HttpServerUtility 对象。
Session 为当前 超文本传输协议 请求获取 HttpSessionState 实例。
SkipAuthorization 获取或设置一个值,该值指定 URLAuthorization 模块是否将跳过对当前请求的授权检查。
Timestamp 获取当前 超文本传输协议 请求的初始时间戳。
Trace 为当前 超文本传输协议 响应获取 TraceContext 对象。
User 为当前 HTrTP 请求获取和设置安全信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值