Session,ViewState,Application,cookie的区别?

版权声明: https://blog.csdn.net/hemingyang97/article/details/82025763

Session,ViewState,Application,cookie的区别?

Viewstate:
  viewstate是用来存储页面状态的,存储级别是页面级的,也就是说它在当前页面有效,出了这个页面就无效了,而且它的存储是经过哈希加密过的,我们的每一服务器控件都有viewstate属性,它默认为true。(例如:分页的存储和一些敏感的变量都是页面级的)。
ASP.NET 的 .aspx页面特有,页面级的;
就是在页面上的一个隐藏域中保存客户端单独使用的数据的一种方式;
服务器端控件的值都自动保存在ViewState中;

  小贴士:
    (1)如何提高页面的访问速度:
                                             A:将服务器端控件的viewstate属性设置为false,这样可以减少页面的html的大小。
                                             B:使用完全的W3C,即不能出现Table,使用完全的DIV+CSS。
                                             C:能用客户端控件尽量用,少用服务器端控件。
    (2)viewstate和Input hidden的区别:
                                              viewstate:viewstate使用哈希加密。
                                               input hidden:它是明码的。
     (3)使用缓存(cache)的情况:
                                             A:该数据会频繁使用,并且不频繁更改。
                                             B:如果数据频繁改的,不建议使用cache,这样会损失效率的。
                                             C:使用缓存之前一定要判断是否存在。
                                             D:使用缓存是需要类型转换。


Cookie

Cookie用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它存放非敏感性的用户信息,信息保存的时间可以根据需要设置.如果没有设置Cookie失效日期,它们仅保存到关闭浏览器程序为止.如果将Cookie对象的Expires属性设置为Minvalue,则表示Cookie永远不会过期.Cookie存储的数据量很受限制,大多数浏览器支持最大容量为4K,因此不要用来保存数据集及其他大量数据.由于并非所有的浏览器都支持Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据,否则会影响网站的安全性.使用Cookie对象保存的代码如下:

//存放信息

Response.Cookies["key"].Value="value";

//读取信息

string UserID=Response.Cookies["key"].Value;
  cookie
保存在客户端,一般保存一些非常敏感的数据,数据量相对较小,如果考虑效率,建议尽量多用,考虑安全,尽量少用。
HTTP协议下的一种方式,通过该方式,服务器或脚本能够在客户机上维护状态信息;
就是在客户端保存客户端单独使用的数据的一种方式;

就像你的病历本一样,医院直接给你带回家;

 

Session

  session保存在服务器端的,session本身有sessionid,用来区别唯一,数据量相对较大,且占有服务器资源,所以考虑效率的时候尽量少用,而考虑安全尽量多用。Session用于保存每个用户的专用信息.每个客户端用户访问时,服务器都为每个用户分配一个唯一的会话ID(Session ID) . 她的生存期是用户持续请求时间再加上一段时间(一般是20分钟左右).Session中的信息保存在Web服务器内容中,保存的数据量可大可小.当Session超时或被关闭时将自动释放保存的数据信息.由于用户停止使用应用程序后它仍然在内存中保持一段时间,因此使用Session对象使保存用户数据的方法效率很低.对于小量的数据,使用Session对象保存还是一个不错的选择.

现在指的是进程内Session。  
在服务器端保存客户端单独使用的数据的一种方式;

就像银行账户,钱都存在银行里,你就拿一张银行卡(SessionId)回家;

使用Session对象保存信息的代码如下:

 

//存放信息

Session["key"]="value"

//读取数据

string UserName=Session["key"].ToString();


Application

application应用程序,application在整个应用程序的生命周期是有效的,只要应用程序运行,它都有效,全局变量可以在服务器端保存共享数据的一种方式;

Application用于保存所有用户的公共的数据信息,如果使用Application对象,一个需要考虑的问题是任何写操作都要在Application_OnStart事件(global.asax)中完成.尽管使用Application.Lock和Applicaiton.Unlock方法来避免写操作的同步,但是它串行化了对Application对象的请求,当网站访问量大的时候会产生严重的性能瓶颈.因此最好不要用此对象保存大的数据集合.
就像银行的单人公共卫生间,谁进去都行,但一次去一个,进去了就锁上门,出来再把锁打开;

 

猜你喜欢

转载自blog.csdn.net/hemingyang97/article/details/82025763