zoukankan      html  css  js  c++  java
  • 使用另一种方式实现会话功能

    有的时候时候并不一定要使用SESSION,或不能使用WEB的SESSION,有的时候考虑自己来定义会话操作。可以用自己的代码来会话的操作。我也读了System.Web.SessionState的InProcess实现代码,如果按它的原理来的话。将会有很大的工作量。

    那好吧,我们还有两个可选的方案,一个是 System.Web.Cache , 一个是 System.Runtime.Cache , MSDN也说了两个功能相似,Runtime的出现是为了可以脱离对于System.Web的依赖。 写个控制台类的程序那还是用System.Runtime吧。

     

    下面是一个测试代码。

     

    static void Main(string[] args)
          {

              MemoryCache mc = new MemoryCache("mycache");
              CacheItemPolicy policy = new CacheItemPolicy();

              policy.RemovedCallback = (x) =>
              {

                  Console.WriteLine(x.CacheItem.Key + "removed");
              };

              policy.SlidingExpiration = new TimeSpan(0, 0, 3);

              var i = 0;
              while (true)
              {
                  i++;

                  mc.AddOrGetExisting(new CacheItem("mykey" + i, "value" + i), policy);

                  Console.WriteLine(i + "=>" + mc.GetCount());

              }

             

          }

     

    如果MemoryCache不满足要求的时候,可以考虑通过扩展 ObjectCache 加入自己想要的东西。(实际上MC就已经够用了)

     

     

    上面的代码写的3秒过期,不会在整3秒的时候过期,大概5秒后才开始清理,这点看一下源代码就知道了。

     

    另外,执行清理操作是一个占用CPU的操作,所以可以看到在运行的时候,如下

     

    image

  • 相关阅读:
    分享一个 @user 前端插件
    .net 的一个分词系统(jieba中文分词的.NET版本:jieba.NET)
    InvokeMember 使用(转http://blog.csdn.net/gooer/article/details/2927113)
    C#反射机制(转自Binfire博客)
    MVC中使用AuthorizeAttribute做身份验证操作
    javascript日期操作详解
    精通 JS正则表达式
    JavaScript 正则表达式
    Js获取当前日期时间及其它操作
    Django 模板中 变量 过滤器的使用方法
  • 原文地址:https://www.cnblogs.com/zbw911/p/4256583.html
Copyright © 2011-2022 走看看