ViewState、Cookie、Session、Application的作用与区别
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保存在客户端,一般保存一些非常敏感的数据,数据量相对较小,如果考虑效率,建议尽量多用,考虑安全,尽量少用。
HTTP协议下的一种方式,通过该方式,服务器或脚本能够在客户机上维护状态信息;
就是在客户端保存客户端单独使用的数据的一种方式;
就像你的病历本一样,医院直接给你带回家;
session保存在服务器端的,session本身有sessionid,用来区别唯一,数据量相对较大,且占有服务器资源,所有考虑效率的时候尽量少用,而考虑安全尽量多用。
现在指的是进程内Session。
在服务器端保存客户端单独使用的数据的一种方式;
就像银行账户,钱都存在银行里,你就拿一张银行卡(SessionId)回家;
application应用程序,application在整个应用程序的生命周期是有效的,只要应用程序运行,它都有效,全局变量可以
在服务器端保存共享数据的一种方式;
就像银行的单人公共卫生间,谁进去都行,但一次去一个,进去了就锁上门,出来再把锁打开;