Session、Cookie、Application、ViewState和Cache 这四者的区别
只有明确这几个对象,才能很好的应用于Asp.Net开发,才能更好的优化与存储数据。
通过以上对比,应该明白的差不多了,下面再详细介绍每个对象的用途
viewstate的值保存在浏览器的html代码中 , 当浏览器关闭 , 则值消失 , 即viewstate是在本页面之内各函数间进行传值的 , 至于为什么要使用这种方法 , 因为在一个事件发生之后 , 页面可能会刷新 , 如果定义全局变量会被清零 , 所以要使用 viewstate.
在页面上存储客户端的信息
所有Web服务器控制都使用ViewState在页面回发期间保存自已的信息状态,如果某个控件不需要在回发期间保存信息,最好将其ViewState属性关闭,(看一下控制的属性面板),避免不必要的资源浪费。通过设置页面的"EnableViewState=false"可以禁用整个页面的ViewState。
ViewState容器可以保存大量的数据,但是必须谨慎使用,因为过多使用会影响性能,最明显的就是网页打开速度慢
session
Session采用键值对 , 也就是说ID存放客户端 , 而值放在服务器端 , 是通过用户的ID去找服务器上对应的值 , 这种方式值放置在服务器端 ,有个时间限制 ,时间到则服务器自动释放.
存储的是客户端和服务器之间的会话
用于保存每个用户的专用信息,它的生存期是用户持续请求时间再加上一段时间(可以在web.config中设置,默认是20分钟)。
Session中的信息保存在服务器的内存中,当然你也可以设置它的保存方法(如存在SQL数据库中)。由于用户停止使用程序后它仍然在内存中保持一段时间,因此使用Session对象保存用户数据的方法效率很低。对于小量的数据。使用Session还是一个不错的选择。
cookie
Cookies则有两种方法 , 一种方法是把值保存在浏览器的变量中 , 当浏览器关闭时结束 , 另一种方法是保存在硬盘中 , 只要时间不过期 , 下次还可使用.
于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它保存非敏感性的内容
如果将Cookie设置为Min Value,则表示它永不过期。
Cookie存储量受到很大限制,一般浏览器支持最大容量为4096字节。因此不能用来存储大量数据。
由于并非所有浏览器都支持Cookie,并且它是以明文方式保存的,所以最好不要保存敏感性的内容。否则会影响网络安全。
Application
用于保存所有用户共用的数据信息,如果被保存的数据在应用程序生存期内根本不会改变或很少改变,用它。但是在asp.net中有个web.config,可能更好点。
如果要使用application,一个需要考虑的问题是任何写操作都有要在application_onstart事件中(Global.asax)中完成。
尽管使用application.lock和application.unlock方法来避免操作的同步,但是它串行化了对application的请求,当网站访问量大时会造成性能瓶颈。
因此最好不要用它存取大的数据集。
Cache
用于在Http请求间保存页面和数据。它允许将频繁访问的大量服务器资源存储在内存中,当用户发出相同的请求时服务器不再次处理而是将Cache中保存的信息返回给用户,节省了服务器处理请求时间。
备注: ViewState是维护页面状态的 Application是维护Web应用程序状态的,整个Web应用程序(站点/虚拟目录)只有一个 Session是维护会话状态的,每个客户有一个
参考资源:
http://topic.csdn.net/t/20041028/08/3497971.html
http://www.cnblogs.com/3stones/archive/2007/03/16/676833.html
http://zhidao.baidu.com/question/40138645
http://blog.sina.com.cn/s/blog_5d96a10d0100bikp.html
http://hi.bccn.net/space-301836-do-blog-id-14009.html
http://www.lslnet.com/linux/docs/linux-4141.htm
http://www.360doc.com/content/09/0403/17/32573_3011834.shtml