★★★★★FireGrass★★★★★

※※※※※ΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞジ
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Session到底该不该用!

Posted on 2006-11-30 15:08  火草  阅读(716)  评论(0编辑  收藏  举报
        以前写程序的时候,当要长时间保存一些信息的时候都是用session来存放,后来碰到一群客户才发现session两个比较麻烦的问题,才想到session到底该不该用,在什么时候用.
         先说下session的两个问题:
         一、session过期问题
                  这个问题刚开始的时候就会遇到,网上也有很多解决办法,具体就不说了,大家可以看另外一篇帖子:
                  http://www.cnblogs.com/wangchunlan2004/articles/577724.html
         二、session混乱问题
                  能发现这个问题还得多谢谢那群超级用户,呵呵。
                  什么时候会出现这个问题呢,当你一台机器上打开两个浏览器登陆到同一个页面上,先是在一个浏览器页面上操作,操作完
              后不要关闭页面,直接换另一个浏览器页面,直接操作,你会发现他用的是第一个浏览器页面上的session,继续操作sessionid
               又变回来了。很奇怪吧。(你想再现这种情况的好象也不容易,呵呵)后来用cache发现不会出现这个问题,不知道怎么回事,后来
               有个朋友说了一句话,才有点明白过来, 他说“Cache是应用程序级别的,而Session是基于连接的”,再根据网上的一些资料
               才知道客户端请求以及服务 器端响应都会附带sessionid,而客户端的浏览器的缓存是做B/S程序所必须注意的,这里也是由这个
               缓存导致的,他把缓存里的sessionid传到了服务器端,服务器端处理完后又会把正确的sessionid传到客户端,这就是为什么连
               续第二次操作的时候sessionid就正确了的原因。(也许你把页面缓存禁用会起到一些效果,因为这种现象比较难弄出来,所以也不
               知道是不是真的能彻底解决)
         鉴于以上两个原因,我最终还是决定用session+cache,这样如果cache用到session里的东西还是会有这个问题,不过出现的几率要微乎其微了,呵呵,你再用session的TimeOut作为cache的过期时间,效果应该跟你用session一样了吧.
         当然不管你怎么做,第一个问题是必须解决,我也是搞了好久,因为网上虽然很多地方有这篇文章,但大多都没有自己实践过.