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

1.存在于客户端还是服务端

  • 客户端:

viewstate、cookie

  • 服务端:

session、application、cache

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

2.有效时间

  • viewstate:

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

  • cookie:

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

  • session:

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

  • 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:保存全局的状态信息,且这些信息的失效时间可以得到更好的控制

Asp.net 中ViewState,cookie,session,application,cache的比较的更多相关文章

  1. c# Cookie,Session,Application,Cache 四种缓存使用情景

    好记性不如烂笔头,记录一下C#缓存使用的情景模式....个人理解,不正之处,欢迎指正 讨论 Cookie,Session,Application,Cache 四种,有的缓存情景对人,有的缓存情景对事儿 ...

  2. ASP.NET 的 ViewState Cookie Session 等的比較

    类型 值保存在哪 值的有效范围 备注 View State client 不能跨页面传递.仅仅能在当前页面保存数据. 在HTML中能够看到ViewState值,只是是加密. 不是明文. ViewSta ...

  3. Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期

    servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...

  4. JavaWeb -cookie&session&application

    cookie&session&application总结 Cookie[key-value](不是内置对象必须new): 1. Cookie 是由服务端生成的,在发送给客户端保存 2. ...

  5. 在asp.net中如何使用Session

    2.那么在asp.net中到底该怎么使用Session呢? Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息.用户在应用程序的页面切换 ...

  6. 转载 asp.net中ViewState的用法详解

    转载原地址: http://www.jb51.net/article/73662.htm 在web窗体控件设置为runat = "server",这个控件会被附加一个隐藏的属性_V ...

  7. 19 02 03 django 中cookies 和 session 和 cache

    Session 是单用户的会话状态.当用户访问网站时,产生一个 sessionid.并存在于 cookies中.每次向服务器请求时,发送这个 cookies,再从服务器中检索是否有这个 session ...

  8. struts2 action中获取request session application的方法

    共四种方式: 其中前两种得到的是Map<String,Object>  后两种得到的才是真正的request对象 而Map就是把request对象中的属性取出做成了键值对而已. [方法一] ...

  9. ASP.NET中的Cookie对象

    1.Cookie对象 Cookie对象一般用于在客户端保存一些针对某个用户的信息. Cookie本质上只是一小段文本字符串,改字符串一般保存在用户计算机特定文件夹下的某个文件中,每个Cookie都保存 ...

随机推荐

  1. Servlet-获取页面的元素的值的方式以及区别

    request.getParameter() 返回客户端的请求参数的值:request.getParameterNames() 返回所有可用属性名的枚举: request.getParameterVa ...

  2. 链表的创建(C语言实现)

    学习链表之前,我们要知道为什么要引入链表. C语言中的数组使用之前,我们必须要定义数组的大小.但是当我们不知道数据个数(或者很大)时,定义数组大小就成了一个困扰,而且对于这么多数据的处理也会很麻烦.所 ...

  3. call、apply、bind的用法

    数组追加 //用apply拼接 var arr1=[12,'name:foo',2048]; var arr2=['Joe','Hello']; Array.prototype.push.apply( ...

  4. C# 算法之链表、双向链表以及正向反向遍历实现

    1.简介 链表是一种非常基础的数据结构之一,我们在日常开发种都会接触到或者是接触到相同类型的链表数据结构.所以本文会使用C#算法来实现一个简单的链表数据结构,并实现其中几个简单的api以供使用. 2. ...

  5. 第二章 微服务构建:Spring Boot

    此处介绍Spring Boot的目的除了它是Spring Cloud的基础外,也由于其自身的各项优点,如自动化配置.快速开发.轻松部署等,非常适合用作微服务架构中各项具体微服务的开发框架. 本章内容: ...

  6. Spring Cloud Zuul 网关使用与 OAuth2.0 认证授权服务

    API 网关的出现的原因是微服务架构的出现,不同的微服务一般会有不同的服务地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题: 客户端会 ...

  7. 深度学习论文翻译解析(一):YOLOv3: An Incremental Improvement

    论文标题: YOLOv3: An Incremental Improvement 论文作者: Joseph Redmon Ali Farhadi YOLO官网:YOLO: Real-Time Obje ...

  8. sass重构响应式unofficial‘s博客轻松适应移动端

    前言: 刚刚玩博客园几天时间,发现挺不错的,对于我这个懒人又是一个爱折腾的人来说挺不错的,对于上班玩电脑,下班玩手机的用户来说,博客园中我的博客有一点给我的感觉不是很友好,电脑端看起来很美观的一个页面 ...

  9. IDEA操作技巧与Tomcat集成

    一.Tomcat Tomcat是基于Java的一个开放源代码.运行servlet和JSP Web应用的Web应用软件容器.Tomcat是Apache软件基金会(Apache Software Foun ...

  10. 【手记】解决涉及office的程序报“Unable to cast COM object of type System._ComObject...”的问题

    报错内容大概像这种: 如果该电脑曾经装过WPS,那解决方法就是把WPS装回来,可以不用,但别卸,把它供着,惹不起.