• HttpRuntime.Cache与HttpContext.Current.Cache


    从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. 主动创建线程或者将任务交给线程池来执行。

  • 相关阅读:
    网站安全配置Nginx防止网站被攻击
    JAVA程序打包方法-挺好
    Kettle6.1连接MongoDB报错
    基于Rancher搭建Kubernetes
    Tomcat性能调优实战
    const int * 和 int * const 傻傻分不清楚
    洛谷P1028数的计算
    【转】sizeof()用法总结
    百练4103:踩方格(DFS)
    百练2815:城堡问题(DFS)
  • 原文地址:https://www.cnblogs.com/xiaoweigogo/p/7804687.html
Copyright © 2020-2023  润新知