• HttpContext.Cache和Application的区别


    应用程序级的Cache和Application
    用户会话级的Session

    application的缺点是在读取时最好使用lock,unlock,损失性能的很。所以它适用那些不需要经常改动的,但又需要每个用户都可以读取到的.数据。  
      cache就是具有所有application的优点,然后又有自己的特点  
      1.基于依赖性的终止.使用关键字作为依赖项,关键字一变,cache内容无效并自动删除。  
      2.锁定管理:和application一样,不过不是使用命令   ,内部自动完成锁和解锁  
      3.资源管理:不使用时,自动删除  
      4.回调:很特殊哦,允许我们当删除了cache后,仍然可以调用。  
      5.隐式插入,显式插入:隐士的就是和application一样,cache["myname"]="abc";  
      显示的就是cache.insert().....  


    每个项目都有一些全局,常用的信息,而这些信息如果在每次使用时都载入,那必将耗费很大的资源,特别是对访问压力大的系统。因此,这个情况中,把这些全局信息放到缓存中是很必要的,放在缓存中可以使得数据能够很快的被读取,节省了很多宝贵的CPU和IO。

    项目中通常是用application 和cache来实现缓存的功能。他们的用法分别为:

    1)application:
    application["test"] = "this is a application message!";

    2)cache

     Cache.Add("Key1", "Value");

    两种用法都很相似,都是采用名/值对的方式来保存数据,而在读取数据时也只要用 键 就可以获取缓存的值。

    而2种相比,到底哪种更有优势呢? 答案是CACHE在使用上更具有灵活性。特点如下:

    1。自有的按时更新缓存的机制

    有的项目需要定时获取最新数据的需求,如天气预报,可能间隔10分钟 就要读取一次需求,那这可以利用CACHE本身的方法来实现。


    //监视某个时间
    public void CreateDependency(Object sender, EventArgs e) {
        // Create a DateTime object.
        DateTime dt = DateTime.Now.AddSeconds(10);

        // Create a cache entry.
        Cache["key1"] = "Value 1";
        CacheDependency dependency = new CacheDependency(null,  dt);

        Cache.Insert("key2", "Value 2", dependency);

        DisplayValues();
    }

      2.当缓存的源修改时,可以重新更新缓存。这个缓存源可以是变量,也可以是文件,或者目录。

    //监视某个变量
    public void CreateDependency(Object sender, EventArgs e) {
        // Create a DateTime object.
        //DateTime dt = DateTime.Now.AddSeconds(10);

        // Create a cache entry.
        Cache["key1"] = "Value 1";

        // Make key2 dependent on key1.
        String[] dependencyKey = new String[1];
        dependencyKey[0] = "key1";
        CacheDependency dependency = new CacheDependency(null, dependencyKey, null);

        Cache.Insert("key2", "Value 2", dependency);

        DisplayValues();
    }

    3.同时以多种搭配来自动更新缓存,如同时监视某个文件,并且在指定间隔的时间内自动更新。

    //监视某个时间和变量
    public void CreateDependency(Object sender, EventArgs e) {
        // Create a DateTime object.
        DateTime dt = DateTime.Now.AddSeconds(10);

        // Create a cache entry.
        Cache["key1"] = "Value 1";

        // Make key2 dependent on key1.
        String[] dependencyKey = new String[1];
        dependencyKey[0] = "key1";
        CacheDependency dependency = new CacheDependency(null, dependencyKey, dt);

        Cache.Insert("key2", "Value 2", dependency);

        DisplayValues();
    }

      比起APPLICATION来,CACHE更显得灵活。

  • 相关阅读:
    关于html元素Css样式设置的一点心得(特别是与位置有关的,还有外边距、内边距有关的那些)
    【idea的一个安装细节】是不是使用idea不能连接网络了?
    html中a标签属性parent和self的举例说明
    关于jquery的each的操作;
    superagent中文文档
    mongoose 查询子文档的方法
    Object.prototype.toString.call()进行类型判断
    局部函数的直接引用与调用
    数据模型中某个字段是单选或者多选的定义方式;
    nodejs项目中的路由写法
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/1115298.html
Copyright © 2020-2023  润新知