听说session多了浪费资源
session在客户端,以cookie的形式存储
问题1:我知道session在客户端,以cookie的形式存储 
       服务器端是不是也保存一份相应的session,(session_id)问题2:我知道session多了浪费资源,那么服务器端多少个session算多?每个session占用服务器端一个线程吗?
问题3:session既然浪费资源,怎么避免使用session,
       比如用户登陆的时候,这种情况下,我原来都用session保存一个变量,在每个页面都判断
       if(session[..] != null)   大家也是这样做的吗?这样做浪费资源吗问题4:在web.config文件中,配置的session生存时间,,是不是在服务器端的生存时间

解决方案 »

  1.   

    问题1: session在客户端只存储sessionid,可以存储在cookie里,或者是get参数(即url?后面的变量)
           服务器端对每个sessionid都会存储一份session
    问题2: session不会每个占用一个线程,session在服务器端相当于一个变量,会占用内存资源。如果你指的是session请求页面的时候,.net有可能会给请求新开一个线程。问题3: 尽量少用session保存变量,可以考虑使用cookie,如果session保存一个变量,如果同时有上万个不同的session在链接,这个session变量也就对应有一万份在服务器端问题4: 你说的应该是session过期时间,默认为20分钟,即20分钟之内,如果某个sessionid的客户端没有做任何请求页面的动作,session在服务器端失效。但是如果有请求,session可能一直存在。跟生存时间有区别的
      

  2.   

    session是存储在服务端,cookie是存储在客户端。
    存储在客户端的东西有被篡改欺骗验证的危险,但cookie你一般可以进行加密,再服务端进行解密验证,一般复杂点别人也不容易篡改。
      

  3.   

    1.session是保存在服务端的一个信息,由于http协议是无状态协议,所以利用cookie保存对应sessionid在客户端保存连接。
    2.这个主要看你的项目需求和你的服务器配置,不可说的绝对。
    3.用户的session在用户退出之后可以使用session.Clear()方法来释放,session在服务端有生存时间,一般是20分钟,IIS重启,进程中断,服务器故障都可能照成服务器session丢失。
    4.是session在服务器的生存时间。asp.net会定时检测在这段时间内没有保持连接的session 然后清除。
      

  4.   

    seesion和cookie时间是不同的最好设置一致 session多了当然浪费资源了,而且叶面传的东西太大的话,反映速度也会慢很多,不是可以判断requese.iddentity.name的方式来判断用户么?而且我自己的做法,一般可以在页面直接表示出来的数据,最好用叶面来保存状态,这样可以代替session的某些情况,节省速度