A.NET ViewState初探(5)_.NET概论及软件使用_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

A.NET ViewState初探(5)

作者:黑客防线网安ASP维护基地 来源:黑客防线网安ASP维护基地 浏览次数:0

本篇关键词:页面使用控件一个
黑客防线网安网讯:    ing、integer、boolean、array、arraylist、hashtable 和自定义 typeconverter  是否增加“html 有效负载”? 否 是  使用 viewstate 获得最佳性能  使用 viewstate 时,每个对象...

    ing、integer、boolean、array、arraylist、hashtable 和自定义 typeconverter

  是否增加“html 有效负载”? 否 是

  使用 viewstate 获得最佳性能

  使用 viewstate 时每个对象都必须先序列化到 viewstate 中然后再通过回传进行反序列化,因此使用 viewstate 并非是没有代价的不过,如果遵循某些简单的原则对 viewstate 的成本加以控制,则通常不会产生明显的性能影响

  在不必时禁用 viewstate。下面的“减少使用 viewstate”一节将周详介绍这一问题。

  使用优化过的 viewstate 序列化程式。上面列出的类型具有专门的序列化程式,这些程式运行速度非常快,并已过优化,能生成非常小的 viewstate。如果要序列化一个未在上面列出的类型,能创建一个自定义 typeconverter 来显着提高他的性能。

  尽量减少使用对象,如果可能,尽量减少放入 viewstate 中的对象的数目。例如,不要使用二维字符串数组(名称/值,其对象的数目和数组的长度相同多),而应使用两个字符串数组(只有两个对象)。不过,在将两个已知类型存储在 viewstate 中之前,在这两者之间转换不会获得所有性能提高,因为这样做实际上相当于付出了两次转换的代价。

  减少使用 viewstate

  默认情况下 viewstate 将被启用,并且是由每个控件(而非页面研发人员)来决定存储在 viewstate 中的内容。有时,这一信息对应用程式并没有什么用处。尽管也没什么害处,但却会明显增加发送到浏览器的页面的大小。因此如果不必使用 viewstate,最佳还是将他关闭,特别是当 viewstate 非常大的时候。

  能基于每个控件、每个页面或每个应用程式来关闭 viewstate。在以下情况中将不再需要 viewstate: 页面 控件

  页面不回传给自身。

  处理的不是控件的事件。

  控件没有动态的或数据绑定的属性值(或对于每一个请求他们都设置在代码中)。

  datagrid 控件是 viewstate 的一个重量级用户。默认情况下,在网格中显示的所有数据也都存储在 viewstate 中,当需要一个复杂的操作(如复杂的搜索)来获取数据时,这是非常有用的。不过,datagrid 的这种行为有时也使得 viewstate 成为累赘。

  例如,这里有一个简单的页面就属于上述情况。因为页面不回传给自身,所以他并不必 viewstate。

  图 3:带有 datagrid1 的简单页面 lessviewstate.aspx

  <%@ import namespace="system.data" %>

  <html>

  <body>

  <form runat="server">

  <asp:datagrid runat="server" />

  </form>

  </body>

  </html>

  <script runat="server">

  private sub page_load(sender as object, e as eventargs)

  dim ds as new dataset()

  ds.readxml(server.mappath("testdata.xml"))

  datagrid1.datasource = ds

  datagrid1.databind()

  end sub

  </script>

  启用 viewstate 时,这个小网格会给该页面增加 3000 多字节的 html 有效负载!使用 asp.net tracing(英文)或查看发送到浏览器的页面的原始码(如以下代码所示),能清晰地看到这一点。

  <html>

  <head>

  <title>减少页面的“html 有效负载”</title>

  </head>

  <body>

  <form name="_ctl0" method="post" action="lessviewstate.aspx" id="_ctl0">

  <input type="hidden" name="__viewstate"

  value="ddwxntgzotu2oda7ddw7bdxppde+oz47bdx0pdtspgk8mt47pjtsphq8qda8cdxw

  pgw8ugfnzunvdw50o18hsxrlbunvdw50o18hrgf0yvnvdxjjzul0zw1db3vuddteyxrhs

 

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-14184-1.html
网站维护教程更新时间:2012-03-30 05:29:51  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer