Asp.net 中ViewState,cookie,session,application,cache的比较

Asp.net 中的状态管理维护包含ViewState,cookie,session,application,cache五种方式,如下是它们的一些比较:数据库

1.存在于客户端仍是服务端浏览器

  • 客户端:

viewstate、cookie服务器

  • 服务端:

session、application、cachecookie

*session:在服务端的存储方式包括4中,内存(最经常使用),ASP.NET State Service(Windows服务)、数据库、自定义状态提供程序session

2.有效时间app

  • viewstate:

只要页面关闭,其状态就失效网站

  • cookie:

      包括临时cookie和永久cookie,临时cookie存在于浏览器内存中,只要浏览器关闭则临时cookie失效,永久cookie是在cookie对象上设置了失效时间,其保存在磁盘上,等过了失效时间即失效。cookie受客户端浏览器控制,且浏览器可以存储的cookie容量是有限的,所以当浏览器不支持cookie、人为在浏览器删除cookie或者浏览器cookie容量超出限制都会使cookie失效。.net

  • session:

session的状态有一个超时时间,当超过该时间后,session自动无效orm

  • application:

这个状态在服务器从新启动以前都是有效的。对象

  • cache:

设置cache无效主要有两种方式:一是设置失效时间,二是经过设置依赖项,当依赖项发生变化时,cache失效

3.可保存的数据格式

  • viewstate:字符串
  • cookie:字符串
  • session:可保存对象
  • application:可保存对象
  • cache:可保存对象

4.客户端与服务端交互时的关系

  • viewstate:

      客户端与服务端的交互只能发送或操做当前页面的视图状态

  • cookie:

       通常状况下,每次用户向服务端发送请求时会把当前站点的全部cookie发向服务端,但cookie容许设置路径(HttpCookie类包含Domain和Path属性),若是设置了具体的路径,则只有访问该路径时,才会把cookie发往服务端

  • session:

       客户端访问同一个站点下的不一样资源,使用的是同一个session,服务端和客户端一般经过cookie来进行关联,即在客户端保存sessionID,每次向服务端发起请求时都会同时把sessionID(在cookie中的主键名为“ASP.NET_SessionId”)也一块儿带上,这样服务端拿到sessionID后就能找到客户端对应的session,因此session只跟站点和客户端相关。

  • application:

     全部客户端共享同一个application,它是全局的

  • cache:

      全部客户端共享同一个cache,它是全局的,但它有更多的控制权,如设置什么时候失效

 5.应用场景

viewstate:只存在ASP.NET WebForm中,如每一个服务器端控件都包含一个视图状态

cookie:一般用于存储一些服务端相关信息的标识符,从而在cookie发往服务端后能够找到其所对应的信息,也会用来保存帐户密码等相关信息

session:用于与指定的客户端共同维护一个状态,保存具体的状态信息

application:保存全局的状态信息,如该网站的访问次数

cache:保存全局的状态信息,且这些信息的失效时间能够获得更好的控制

相关文章
相关标签/搜索