第三部分,状态管理与缓存
何为状态管理,起始对于web而言,经过前面章节的讲解,已经理解,对于web程序,就是一个无状态的程序,每次的请求与每次的响应,两者之间本身就是独立存在的,这一点对于早期的静态网页来说,倒没什么,因为每次的请求和响应其实都是固定不变的。但是到了动态网页时代,就不行了,web开发的很大一部分工作将变为状态管理。这一点,可能举一个例子,最具有代表性,比如说购物车,那么对于购物车而言,就需要知道他的访问者是谁?虽然他们可以在不同的页面切换,但是购物车不能够变化,此时就是一种状态管理。
(更多状态管理的场景,各位可以补充)
第14章会话状态
Session就是一种会话状态,统一浏览器在一段时间内访问服务器之后,会产生一个24位的唯一SessionID,这个ID就标识了客户端的身份,虽然客户可以在不同的网页间切换,但是SessionID都是不变的。
Session的用法,Session是Page类的内部属性,然后直接采用KEY/VALUE模式直接使用。
Session的场景,分为两种:服务端和客户端
服务端:意思就是说Session所定义的需要缓存的变量的存储位置,可以存储在进程中,专有服务器,数据库
客户端:意思就是说SessionID的存储位置,可以使cookies,也可以是url当中(用于解决非cookie支持的浏览器)
Web.confg 中的<sessionState></sessionState>节用于完成该部分的设置。
Session可以存储的数据类型,除了简单地数据类型以外,所有的可以序列化的类型都是客户存储的。
说明: page类的内置对象,有application,session,cache,request,response等,通常很多人都是用application,session,cache来用作数据缓存,其实他们是有区别的。
Application,是作为全局变量在使用,他在进程中,生命周期为应用程序生命周期。它越多占用内存越多。
Session,其实它不仅仅是存取一个变量,他存储的是一个会话内的变量,而且他会有sessionID来区分客户端,session存储变量只是他的一个间接实现功能。并且他可以存在进程,数据库,或者专用服务器中。
Cache,他是存储在进程中,生命周期是可以设置的,他有比较灵活的属性,包括过期时间,过期通知等等,他目的是完成复杂对象的缓存处理。
第15章应用程序数据的缓存
Cache对象介绍,使用方法类似Session,目的是改善复杂变量的获取方式。提升web访问的性能。
第16张输出缓存
刚开始看的时候,还真是没有特别理解什么叫做输出缓存,后来看了一下原来就是所谓的页面缓存,不同的书籍,叫法可能不同而已。为什么会存在页面缓存哪?本质目标是改善web访问的性能,对于重复网页不要重复计算,降低服务器的压力,提升web应用的性能,因此从数据的角度缓存,产生了cache,从页面的角度产生了输出缓存,就是页面生成后,放在一个地方,然后每次请求直接返回该页面。
用法:就是在每个页面头部使用<%@outputcache >指令,属性包括周期,依赖项等等。
说明:个人觉得,只从有了ajax后,输出缓存的意义降低了,因为可以局部刷新,输出整个页的概念不大了。
<ASP.NET4 从入门到精通>学习笔记3,布布扣,bubuko.com