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
|
|
存储位置
|
服务器
|
服务器
|
服务器
|
客户端
|
客户端
|
|
是否会被主动丢弃
|
不会
|
会
|
不会
|
不会
|
不会
|
|
与会话相关
|
否
|
否
|
是
|
是
|
是
|
|
是否被序列化
|
否
|
否
|
否
|
是
|
是
|
|
是否发生服务器-客户端传输
|
否
|
否
|
否
|
是
|
是(默认情况)
|
|
是否被加密
|
否
|
否
|
否
|
是
|
否(默认情况)
|

浙公网安备 33010602011771号