运行结果:html
2.Session是保存在服务器端的用户变量。我能够在一个页面中对Session进行值,而后在另外一个页面里访问它。数据库
Session的附值方法以下:
浏览器
2.Application缓存
解释:若是数据应在多个客户端共享,就可使用应用程序状态来保存。应用程序状态的使用方式跟Session很是类似。对于应用程序状态,应使用HttpApplication类,经过Page类的Application属性就能够访问它。服务器
一般Application能够用来统计访问网站的人数,在启动Web应用程序时,初始化应用程序变量userCount。 Application_Start()是global.asax文件中的时间处理程序方法,在启动网站的第一个Asp.Net页面时调用该方法。cookie
在Application_Start()事件处理程序中,应用程序变量userCount的值会递增。在改变应用程序变量以前,应用程序对象必须用Lock() 方法锁定,不然会出现线程问题,由于多个用户能够同时访问一个应用程序变量。在改变了应用程序变量的值后,还必须调用Unlock()方法。注意锁定和解 锁时间的时间比较短,在此时间段内,不该读文件或数据库中的数据。不然,其余用户就必须等到数据访问完成以后才能操做。session
运行结果:app
注意:不要在应用程序状态中存储太多的数据,由于应用程序状态须要服务器资源,直到服务器中止或重启以后,才会释放这些资源。框架
3.Cache布局
使用Cache类的优势是当缓存的数据发生变化时,Cache类会让数据失效,并实现缓存数据的从新添加,而后通知应用程序,报告缓存的及时更新。
1.经常使用的方法
建立cache
在DotNet环境下经过Cache.Insert(string key,object o)方法建立。
其中key 表明cache的ID,o表明存到cache里的对象。
Add: 将数据添加到Cache对象
Insert: 向Cache中插入数据项,可用于修改已经存在的数据缓存项
销毁cache
经过方法Cache.Remove(string key)
其中key 表明cache的 ID.
调用cache
Cache支持装箱/拆箱操做。如你能够把一个DataSet对象ds经过Cache.Insert(“dsCache”,ds)的方式存到Cache中,能够经过拆箱操做 DataSet ds = (DataSet)Cache[“dsCache”]来访问它。
获取数据
Get:从Cache对象中获取指定的数据项,注意返回的是Object类型,须要进行类型转换
GetType:从Cache对象中获取数据项的类型,判断数据类型后,方便进行转换
GetEnumerator
循环访问Cache对象中的缓存数据项。注意其返回类型是“IDictionaryEnumerator”
下面的代码演示了如何应用Cache类的这些方法。在使用本代码时须要注意,代码中使用了Arraylist对象,因此须要添加对命名空间“System.Collections”的引用,同时使用Cache类别忘记了添加命名空间
技巧:在使用GetType方法时,若是要判断类型,须要使用Object.GetType().Name属性获取类型的名称。
运行结果:
其中在读取类型为ArrayList的数据时,因为没有进行类型转换,因此取出的是类型为“System.Collections.ArrayList”的对象。
2.何时用cache
Cache 通常用于数据较固定,用的较频繁的地方。例如能够把进销存系统中能够把产品信息存入cache,在用户调用产品信息时经过调用cache便可,这样从很大 程度上减小了用户与数据库的交互,提升了系统的性能。反之,cache不适合用在数据变更快,使用范围很窄的地方。例如把一个具体采购单存入 cache中。
3.cache 调用注意事项
Cache是有时间限制的。超过了服务器设置的过时时间,就会被服务器回收。当cache被回收后对应的内存块就会被清空,再次经过cache[“cachekey”]访问对象时返回的就是null值。因此如下这种调用就会出现异常
4.缓存功能
典型应用:实现数据的缓存快速读取功能
本例的目的是将目录列表填充到下拉框中,当缓存失效后,目录列表的内容为空。演示的步骤以下所述。
在5秒之内若是单击按钮,则正常显示目录列表,若是超过5秒,则缓存对象已经不存在,因此下拉列表框的内容为空。
4. Viewstate
1、ViewState的原理
1.浏览器请求Default.aspx页面
2.在服务器端 发现建立的ViewState 这个时候 会自动建立一个名字叫作__VIEWSTATE(双下滑线 所有是大写)的隐藏域 其隐藏域的值通过base64加密之后返回到浏览器端这一加密过程在页面生命周期的SaveState事件中的SaveAllState方法中完成
3.当浏览器提交表单的时候 将__VIEWSTATE的隐藏域也一块儿提交到服务端 这个时候 页面生命周期的ReadState事件
的ReadAllState方法会将加密后的值反base64解密 最后将值赋值给名字叫作name的ViewState
4.最后来操做ViewState中的值
2、ViewState的用法:
1.定义ViewState属性
public int PageCount{
get{return (int)ViewState["PageCount"];}
set{ViewState["PageCount"]=value;}
}
2.使用ViewState的条件
若是要使用ViewState,则在ASPX页面中必需要有一个服务器端窗体标记(<form runat = "server">)。窗体字段是必须的,这样包含ViewState信息的隐藏字段才能被传回服务器。并且,该窗体还必须是服务器端的窗体,这样 在服务器上执行该页面时,ASP.net页面框架才能添加隐藏字段。
page的EnableViewState 属性值为true
控件的EnableViewState 属性值为 true
4、viewstate与session的对比
(1) session值是保存在服务器内存上,那么,能够确定,大量的使用session将致使服务器负担加剧. 而viewstate因为只是将数据存入到页面隐藏控件里,再也不占用服务器资源,所以, 咱们能够将一些须要服务器"记住"的变量和对象保存到viewstate里面. 而session则只应该应用在须要跨页面且与每一个访问用户相关的变量和对象存储上.
(2) session在默认状况下20分钟就过时,而viewstate则永远不会过时.
但viewstate并非能存储全部的.net类型数据,它仅仅支持String、Integer、Boolean、Array、ArrayList、Hashtable 以及自定义的一些类型.
任何事物都有两面性, 使用viewstate会增长页面html的输出量,占用更多的带宽,这一点是须要咱们慎重考虑的. 另外, 因为全部的viewstate都是存储在一个隐藏域里面,用户能够很容易的经过查看源码来看到这个通过base64编码的值.而后再通过转换就能够获取你 存储其中的对象和变量值
5. Cookie
用于保存客户浏览器请求服务器页面的请求信息,其有效期能够人为设置,并且其存储的数据量很受限制,所以不要保存数据集及其余大量数据。并且Cookie以明文方式将数据信息保存在客户端的计算机中,所以最好不要保存敏感的未加密的数据。
如下是cookie的几种方法:
6.隐藏域
隐藏域是网页里面一个特殊的空间,它不在网页中显示出来,主要用途是为网页交互时存储一些不须要在网页显示的数据
隐藏域是用来收集或发送信息的不可见元素,对于网页的访问者来讲,隐藏域是看不见的。当表单被提交时,隐藏域就会将信息用你设置时定义的名称和值发送到服务器上。
例如:<input type="hidden" name="ExPws" value="dd">
其实说白了就隐藏域不在前台显视的,跟表单的元素同样.有名字有数值,只是在提交数据是不可见的.
例子:在ASP中隐藏域能够用于隐藏的表单,这样输入框就能够不受表单的限制能够随意在网页上布局
<input name="id" type="hidden" value="abc">
<%="隐藏域值为:"& request("id")%>
提交此表单后会显示
隐藏域值为:abc
7.查询字符串
当服务器执行到Response.Redirect语句时,会当即中断页面的生命周期,直接向客户端返回信息,让客户端进行重定向操做。
ASP.NET中,服务器端重定向有三种方法
1.Server.Transfer("xxx.aspx"):
服务器中止解析本页,保存此页转向前的数据后,再使页面转向到newPage.aspx, 并将转向前数据加上newPage.aspx页结果返回给浏览器。
2.Server.Execute("xxx.aspx");
服务器保存此页转向前的数据后,使页面转向到newPage.aspx执行, 再返回本页继续执行.再将三者结果合并后返回给浏览器.
3.Response.Redirect("xxx.aspx"):
服务器执行到这个方法时,就发信息告诉客户端浏览器,让客户端浏览器发出一个新的http请求,该请求的url为"xxx.aspx"。浏览器因而经过全新的http请求而转到了xxx.aspx页面。
总结:
1.用户变量的存储:session比较经常使用
2.页面跳转:查询字符串比较经常使用
3.缓存
l cookie(用于保存客户浏览器请求服务器页面的请求信息,其有效期能够人为设置,并且其存储的数据量很受限制)
l cache(用于数据缓存更新)
l viewstate(存储在一个隐藏域里面, 不占用服务资源,永远不会过时但会增长html输出量,占用带宽)
l application(应用于整个应用程序,至关于全局变量,可是用处不是很普遍,能够用于统计人数)