zoukankan      html  css  js  c++  java
  • ASP.NET常用信息保持状态学习笔记一

     1、ViewState:ViewState是ASP.NET中.aspx特有的,通过HTTP报文传递,所有服务器端控件的值都会自动保存在ViewState   中。并且ViewState只能保存:String、Int、Bool、Array、ArrayList、Hashtable类型数据。

       ViewState通过base64编码后保存在页面隐藏域中,页面关闭时ViewState就销毁。
       道理同隐藏域,只是.NET Framwork封装了传值取值过程而已。
       使用ViewState有一个前提:页面必须有一个服务端窗体的标记<form runat="server">,服务器输出时,同时将ViewState的值添加到表单的隐藏域中。页面请求时,同时也将页面的__ViewState隐藏域提交,服务器在接收到请求时,自动在报文中寻找__ViewState的隐藏域,如果有存在的话,则自动将它的值解码后赋值给页面的ViewState属性中。
       缺点:加大网站数据流量、降低速度;只适合于在同一个页面不关闭的情况下多次与服务器之间的交互。 

      
      2、Cookie:cookie数据保存在浏览器客户端(一般为4KB),也是通过HTTP报文传递。

         cookie保存两种方式 Ⅰ、保存在浏览器内存中,不关闭浏览器情况下访问任何页面都可以得到。

                                          Ⅱ、保存到硬盘中(设置Expires(只写)的时间,如果设置时间为负数时再返回给浏览器,cookie会被清除。)                                cook.Expires=Datetime.Now.AddDays(-1)。

       不管客户端浏览器请求任何数据,报文都会带有cookie。
       清空所有Cookie时,谨防使用以下循环删除,不然可能出现死循环。(具体原因:在获取Request.Cookies的时候FrameWork会自动引用Respone.Cookies;具体实现可以使用反编译工具查看...)
        HttpCookieCollection hcc=Request.Cookies;
        for(int i=0;i<hcc.Count;i++)
        { HttpCookie cook =hcc[i];
          cook.Expries=DtaeTime.NOW.Adds(-1);
          Respone.Cookie.Add(cook);
        }
        可以使用反向循环的方法删除。
        for(int i=hcc.Count;i>0;i--){..}

    注:Cookie大小限制(转)

    源文:http://www.cnblogs.com/tedyding/archive/2010/03/20/1690690.html

    一、浏览器允许每个域名所包含的cookie数:

      Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但IE7似乎也允许每个域名50个cookie

      Firefox每个域名cookie限制为50个。

      Opera每个域名cookie限制为30个。

      Safari/WebKit貌似没有cookie限制。但是如果cookie很多,则会使header大小超过服务器的处理的限制,会导致错误发生。

      注:“每个域名cookie限制为20个”将不再正确!

    二、当很多的cookie被设置,浏览器如何去响应。

      除Safari(可以设置全部cookie,不管数量多少),有两个方法:

      最少最近使用(leastrecentlyused(LRU))的方法:当Cookie已达到限额,自动踢除最老的Cookie,以使给最新的Cookie一些空间。InternetExplorer和Opera使用此方法。

      Firefox很独特:虽然最后的设置的Cookie始终保留,但似乎随机决定哪些cookie被保留。似乎没有任何计划(建议:在Firefox中不要超过Cookie限制)。

    三、不同浏览器间cookie大小也不同:

      Firefox和Safari允许cookie多达4097个字节,包括名(name)、值(value)和等号。

      Opera允许cookie多达4096个字节,包括:名(name)、值(value)和等号。

      InternetExplorer允许cookie多达4095个字节,包括:名(name)、值(value)和等号。

    注:多字节字符计算为两个字节。在所有浏览器中,任何cookie大小超过限制都被忽略,且永远不会被设置。

    本文从百度空间搬家到博客园。

  • 相关阅读:
    n!末尾有几个零
    NYOJ 14(会场安排)
    使用dynamic来简化反射实现,并且提高了性能。
    VB.NET 、Java 与 C# 语法对比。
    你不得不使用的XML代码生成器,那就是XmlFactory
    C# 和vb.net事件
    SQL Server 2008中的hierarchyid
    系统架构师基础到企业应用架构客户端/服务器
    Asp.Net在IIS上运行不了,就试下下面方法应该可以你的问题
    为你的博客添加几分色彩
  • 原文地址:https://www.cnblogs.com/yunanwu/p/4168597.html
Copyright © 2011-2022 走看看