Application,Session,Cookie,ViewState,Cache对象用法、作用域的区别

在我们开发网站时涉及到页面间数据共享的时候,我们常常需要使用某一种方式来持久化我们的数据,持久化数据的方式有许多种,这就要求我们在其中做出选择。

在做开发的时候我们需要精确的选择我们使用的数据持久化方式,下面对于Application、Cookie、Session和Cache的描述或许可以帮助您作出决定:

Application(HttpContext.Application):

  1.Application用于保存所有用户共用的信息。

  2.在ASP时代,如果要保存到诗句在应用程序的生命周期内不会或者很少发生改变,那么Application是理想的选择。但是,在Asp.net开发环境中我们把类似的陪着数据放在Web.confg中。

  3.如果要使用Application,初始化操作在Application_Start事件中完成(global.asax)。

  4.因为所有用户共享,所以使用Application.Lock()和Application.UnLock()避免了冲突,但是,他串行化了对Application的请求,会产生严重的性能瓶颈。

  5.应用程序状态非常适合存储那些数量少、不随用户的变化而变化的常用数据。如统计在线人数

  6.存储在服务器的内存中

Session(HttpContext.Session):

  1.Session用来保存每一个用户的专有信息。

  2.Session的生存期是用户持续请求时间加上一段时间(一般是20分钟左右)。可在web.conf配置<sessionState mode="InProc" timeout="120"/>

      mode="InProc":获取session状态的速度快,session状态直接存储在iis的进程中。易丢失,经常需要重新登录。

      mode="StateServer":session状态单独存储在一个进程中,不会因为iis或者应用的重启而丢失状态。获取session状态的速度比InProc慢一些,毕竟是两个不同的进程。

                 通常需要开启服务和注册表的,目的是解决跨站点跨平台的作用。

  3.存储在服务器的内存中

  4.适合存储那些数量少、随用户的变化而变化的常用数据。

Cookie(HttpCookie类):

  1.存储在客户端

  2.只能存储字符串

  3.大小不超过4k

  4.具有生命周期

  5.不安全,所以不建议存储敏感信息 

Cache(HttpContext.Cache):

  1.ASP.NET 为您提供了一个强大的、便于使用的缓存机制,用于将需要大量服务器资源来创建的对象存储在内存中。缓存这些类型的资源会大大改进应用程序的性能。

  2.它不与会话相关,Cache实例是每一个应用程序专用的,所以它是多会话共享的,因此使用它可以提高网站性能,但是可能泄露用户的安全信息。

  3.由于在服务器缺乏内存时可能会自动移除Cache,因此需要在每次获取数据时检测该Cache项是否还存在。

  4.使用缓存的清理、到期管理、依赖项等功能,必须使用Insert或者Add方法添加信息。

  5.适合存储那些数量大、不随用户的变化而变化的常用数据。

ViewState():

  1. ViewState 属性提供一个字典对象,用于在对同一页的多个请求之间保留值。

  2.可以保存大量数据但要慎用,因为会影响程序性能。

  3.不需要则关闭,通过给@Page指令添加“EnableViewState=false"属性可以禁止整个页面的ViewState.

 

 

 
Application
Cache
Session
Cookie
ViewState
存储位置
服务器
服务器
服务器
客户端
客户端
是否会被主动丢弃
不会
会
不会
不会
不会
与会话相关
否
否
是
是
是
是否被序列化
否
否
否
是
是
是否发生服务器-客户端传输
否
否
否
是
是(默认情况)
是否被加密
否
否
否
是
否(默认情况)
posted @ 2017-01-28 16:03  花生打代码会头痛  阅读(152)  评论(0)    收藏  举报