zoukankan      html  css  js  c++  java
  • ASP.NET Web – 状态管理

    状态类型 客户端或服务器资源 有效时间
    ViewState 客户端 只在一个页面中
    Cookie 客户端 关闭浏览器时会删除临时cookie,永久cookie存储在客户系统的磁盘上
    Session 服务器 会话状态与浏览器相关。会话在超时(默认为20分钟)后变得无效
    Application 服务器 在所有的客户端上共享应用程序状态,这个状态在服务器重新启动之前都是有效的
    Cache 服务器 类似于应用程序状态,缓存是共享的。但是,使缓存无效有更好的控制方式

    客户端的状态管理

    -ViewState

    Web服务器控件自动使用ViewState来使事件工作。ViewState包含的状态与控件发送给客户端时包含的状态相同。当浏览器把窗体发送回服务器时,ViewState包含了初始值,但所发送的控件包含新值。如果初始值和新值有区别,就调用相应的事件处理程序。

    缺点:数据总是要从服务器传送给客户端,再从客户端传送给服务器,增加了网络流量。在Page指令中把EnableViewState属性设置为false,就可以关闭页面中有控件的ViewState。

    还可以把定制的数据存储在ViewState中。为此可以使用索引符和Page类的ViewState属性。ViewState[“mydata”] = “my data”;

    优点:每个浏览器都可以使用这个特性,用户不能关闭它。

    ViewState只保存在页面中。如果状态应保存在多个不同的页面中,就应使用cookie在客户端保存状态。

    -cookies

    在HTTP头中定义。使用HttpResponse类可以把cookie发送给客户端。Response是Page类的一个属性,它返回一个HttpResponse类型的对象。此类定义了返回HttpCookieCollection的Cookies属性。使用HttpCookieCollection可以向客户端返回多个cookie。

    以下代码说明了如何把cookie发送给客户端

    string myval = “myval”;

    HttpCookie cookie = new HttpCookie(“mycookie”)

    cookie.Values.Add(“mystate”, myval)

    Response.Cookies.Add(cookie)

    cookie可以是临时的,仅在一个浏览器会话中有效,也可以存储在客户端的磁盘上。为了使cookie变成永久的,必须使用HttpCookie对象设置成Expires属性。

    Var cookie = new HttpCookie(“mycookie”)

    cookie.Values.Add(“mystate”,“myval”)

    cookie.Expires = DateTime.Now.AddMonths(3)

    Response.Cookies.Add(cookie)

    浏览器只能给一个服务器存储20个cookie,给所有服务器存储300个cookie。存储的数据不能超过4K.

    服务器端状态管理

    -会话

    会话状态与浏览器相关,客户在服务器第一次打开ASP.NET页面时,会话就开始了。当客户在20分钟内美欧访问服务器时,会话结束。

    会话状态可以存储在HttpSessionState对象中。可以使用Page类的Session属性来访问与当前HTTP上下文相关的会话状态对象。

    -应用程序

    如果应在多个客户端之间共享数据,就可以使用应用程序状态。使用HttpApplicationState类。在改变应用程序变量之前,必须用Lock()方法锁定应用程序对象。否则就会出现线程问题,因为多个客户可以同时访问一个应用程序变量。

    不要在应用程序状态中存储太多的数据,因为应用程序状态需要占用服务器资源,直到服务器停止或重新启动之后,才会释放这些资源。

    -缓存

    缓存是服务器状态,它类似于应用程序状态,因为它在所有客户端上共享。缓存比应用程序状态灵活,可以通过多种方式来定义状态的失效时间。对于缓存,需要使用System.Web.Caching名称空间和Cache类。

  • 相关阅读:
    JSP中page和pageContext的区别
    exe4j生成的exe文件没有把jre文件也打进exe文件中
    exe4j将jar文件和jre文件打包成exe
    exe4j打包jar文件为exe文件出现的问题:The JAVA_HOME environment variable does not point to a working 32-bit JDK or JRE.
    JS作用域
    js 函数
    js数组
    js表达式和语句
    js操作符
    js注释和数据类型转换
  • 原文地址:https://www.cnblogs.com/lilideng/p/3701862.html
Copyright © 2011-2022 走看看