解决方案 »

  1.   

    public static  
    会被进程池回收哦
      

  2.   

    public static Dictionary<key,value>
    你用什么作为key,用户名吗
    那每个用户就只保存1个数据吗?
      

  3.   

    以用户ID来作为key,List<T>是用户的列表信息。这样说来每个用户是只需要保存一个数据的,只不过这个数据是一个泛型集合。
      

  4.   

    每个用户自己的信息用session就可以了,没必要static或者cache
      

  5.   

    以用户ID来作为key,List<T>是用户的列表信息。这样说来每个用户是只需要保存一个数据的,只不过这个数据是一个泛型集合。
    集合是引用类型啊,你这个集合是实例对象还是静态对象??
    如果是静态的,那就没法给每个用户指定一个
    如果是实例的,那你不如连字典也是实例的,弄个静态字典还有任何意义?
      

  6.   

    以用户ID来作为key,List<T>是用户的列表信息。这样说来每个用户是只需要保存一个数据的,只不过这个数据是一个泛型集合。
    集合是引用类型啊,你这个集合是实例对象还是静态对象??
    如果是静态的,那就没法给每个用户指定一个
    如果是实例的,那你不如连字典也是实例的,弄个静态字典还有任何意义?
    集合是实例对象,登录的时候从数据库中获取的。每一个用户都有自己的集合信息,因此弄成键值对,使用静态是因为全局都要用的。每一个页面都需要访问这些数据,而每次都去查询数据库会影响效率。因此这里定义静态的变量当做缓存使用,但是不清楚这样的缓存和真正的缓存Cache有什么区别。如题,怎样实现用户注销或者关闭网页时清除缓存。希望前辈能够提点提点..
      

  7.   

    这里主要是想实现用户关闭页面或者注销登录时他的这些信息能够被清除。Session可以在注销登录的时候清除掉,但是关闭页面时我不知道该如何做。这里尝试使用静态的变量当做缓存,但不知道在页面关闭的时候,用户的个人信息是不是消失了。这也是我问这个问题的初衷。
      

  8.   

    session有默认超时时间的,你觉得默认的20分钟太长,设置成5分钟就可以了
      

  9.   

    你这是要自己实现session的节奏吗
    已经有session了为什么要自己实现
      

  10.   

    页面关闭时,缓存信息自动失效。Session可以这样吗?
      

  11.   

    前辈,前提是,当用户注销或者关闭页面时,就需自动清除掉自己的缓存信息的。Session不能达到这个要求啊,所以我问大家,这里使用的静态变量能不能达到这种要求,就是在关闭后这些信息就没了
      

  12.   

    页面关闭时,缓存信息自动失效。Session可以这样吗?
    用户如果关闭了页面,再次进入你的网站,会重新给他分配一个SessionID
    原来的可能也还在,要等超时了才会清除,不过跟新登录的已经没有关系了
      

  13.   

    你要自己实现session,要考虑的问题可多了
    如果用户没有正常退出
    而是关页面,关IE,关机,拔网线,你咋办?
      

  14.   


    Cache是真正的缓存。如果你把所有的内存都叫做缓存,那说明你并没有搞明白内存跟缓存的区别。这就好像没有搞明白胃跟食物的区别一样。内存总共就有那么(允许你用某一个网站用的)几百M,而要高速缓存信息,每一天,你可能需要缓存几千M甚至突破上万M的内容!这些内容有些是缓存了10秒钟就清除了,有些是缓存了10分钟才清除,数十万的缓存单元的生存期各不相同(根据各自的缓存依赖条件而动态计算生存期)。比如说当物理内存空间较少时,有些缓存单元就自动清除了。更多的缓存单元是因为数据库内容发生了变化而被自动清除。你把一些数据保存到内存变量,这叫什么缓存?这不过是一些人胡乱用“缓存”这个概念的表现。缓存的关键是设置丰富“缓存项”,然后.net系统自动清理缓存。缓存的技术体现就在于能恰当地设置缓存自动丢失策略,才能让少量(几十M)的内存当极大(几千M)的内存使用,提高缓存使用率。如果你只知道“内存无限大,可以用来当数据库使用”这叫什么缓存策略啊?直接就叫做内存数据库不就完了嘛。
      

  15.   


    页面关闭时,缓存信息自动失效。Session可以这样吗?
    用户如果关闭了页面,再次进入你的网站,会重新给他分配一个SessionID
    原来的可能也还在,要等超时了才会清除,不过跟新登录的已经没有关系了
    那看来目前只能使用Session让它自动失效了。谢谢各位的回答!
      

  16.   

    .net的缓存依赖项(CacheDependency)具体实现机制还是比较少的,也就那么5、6种。你还可以自己继承这个类,编写你自己的缓存依赖项类型。总之要是不懂如何为每一个Cache单元设置CacheDependency,那么基本上就等于不太会用Cache。尽管你在执行 Cache.Insert(....) 语句时不去设置自己的 CacheDependency 参数,那么Cache系统也还是会经常清除缓存单元。这才是缓存的!而你弄个 Dictonary<,> 变量,里边的数据又不会自动消失,这只会滥用内存、降低内存的性价比,没有达到缓存的作用。只能说明你的程序太小,滥用内存也崩溃不了、没有被你的老板发现问题而已。
      

  17.   

    前辈,前提是,当用户注销或者关闭页面时,就需自动清除掉自己的缓存信息的。Session不能达到这个要求啊,所以我问大家,这里使用的静态变量能不能达到这种要求,就是在关闭后这些信息就没了
    Session 集合保存的数据,跟“缓存”根本不是同一个概念。你那个就是想保存在人家的Session集合中。缓存要处理的是全局的信息,比如说某个人相关信息查询结果是给整个系统使用的,跟这个人是否登录、会话Session无关!