Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# viewstate键的长度是否影响viewstate的大小?_C#_Asp.net_Performance_Viewstate - Fatal编程技术网

C# viewstate键的长度是否影响viewstate的大小?

C# viewstate键的长度是否影响viewstate的大小?,c#,asp.net,performance,viewstate,C#,Asp.net,Performance,Viewstate,有人建议,ViewState中使用的键的大小会导致性能问题,因为视图状态的大小会更大,因此会增加页面大小,从而增加渲染 虽然我可以看到较大的键可能会导致视图状态大小的增加,但我不确定其影响有多大 例如,ViewState[“MySpecialProperty”]是否会导致ViewState大于ViewState[“x”]?如果是这样的话,那么这种差异是否真的足以成为标准web应用程序中的一个问题呢 例如,ViewState[“MySpecialProperty”]是否会导致ViewState大于

有人建议,ViewState中使用的键的大小会导致性能问题,因为视图状态的大小会更大,因此会增加页面大小,从而增加渲染

虽然我可以看到较大的键可能会导致视图状态大小的增加,但我不确定其影响有多大

例如,
ViewState[“MySpecialProperty”]
是否会导致ViewState大于
ViewState[“x”]
?如果是这样的话,那么这种差异是否真的足以成为标准web应用程序中的一个问题呢

例如,ViewState[“MySpecialProperty”]是否会导致ViewState大于ViewState[“x”]

是的,当对键/值对进行编码时,得到的
ViewState
会更大

这种差异是否真的足以成为标准web应用程序中的一个问题


依我看,不是。我更担心的是你在
ViewState
中放入了多少对,以及你是否真的需要将这些信息传递给客户端。

是的,它会影响ViewState的大小,正如你提到的,如果你只在ViewState中添加一个变量,,那么它就不重要了,如果您开始编写变量,如
x
,那么读取代码将是一件痛苦的事情,因此最好在有利于代码可读性的情况下保持平衡

在考虑这样做以提高性能之前,先创建一些负载测试,并根据测试结果做出正确的决定

ASPX页面的性能非常重要

不过,您可以尝试以其他方式提高与ViewState相关的性能,基本上,禁用不需要它的控件的ViewState

有关更多信息:


直接从马嘴里:

…默认情况下,页面的视图状态位于名为uu VIEWSTATE的隐藏表单字段中。这个隐藏的表单字段很容易变得非常大,大约有几十KB。_uuuviewstate表单字段不仅会导致下载速度变慢,而且每当用户发回网页时,此隐藏表单字段的内容必须发回HTTP请求,从而延长请求时间,以及

查看成本状态

没有什么是免费的,视图状态也不例外。ASP.NET 每当ASP.NET网页出现时,“视图状态”将强制执行两次性能点击 请求:

  • 在所有页面访问中,在“保存视图状态”阶段,page类为其内部的所有控件收集集合视图状态 控件层次结构并将状态序列化为base-64编码 一串(这是在隐藏的视图状态中发出的字符串 类似地,在回发上,加载视图状态阶段需要 反序列化持久化视图状态数据,并更新相关 控件层次结构中的控件
  • _u_viewstatehidden form字段为客户端必须下载的网页添加了额外的大小。对于某些视图状态较重的页面,此 可以是数十KB的数据,这可能需要几个额外的 秒(或分钟!)供调制解调器用户下载。另外,在发布时 返回时,uuu VIEWSTATE表单字段必须发送回Web服务器 在HTTP POST头中,从而增加回发请求 时间
  • 如果您正在设计用户通常访问的网站 通过调制解调器连接时,您应该特别注意 使用bloat时,视图状态可能会添加到页面中。幸运的是 有许多技术可以用来减少视图状态 尺寸。我们将首先了解如何有选择地指示 服务器控件应保存其视图状态。如果控件的状态为 不需要跨回发持久化,我们可以关闭视图状态 跟踪该控件,从而节省可能需要的额外字节 否则,将由该控件添加。接下来,我们将 检查如何从页面的隐藏窗体中删除视图状态 字段,将视图状态存储在Web服务器的 文件系统

    发件人:

    默认情况下,视图状态数据存储在页面中的隐藏字段中 并使用base64编码进行编码。此外,视图的散列 通过使用机器身份验证从数据创建状态数据 代码(MAC)键。将哈希值添加到编码的视图状态数据中 结果字符串存储在页面中


    因此,逐字节计算,是的,当您对条目使用更长的键时,视图状态将更长,因为应该将更多的字符转换为base64。但这从来都不是一个大问题,因为与数据长度的大小相比,键的大小(通常)非常小。

    viewstate键的长度确实会影响viewstate的大小。然而,这只是最低限度的。从我在“MySpecialProperty”和“x”上做的小测试中可以看出,两者相差20个左右的字符。也不是说,如果你有更长的钥匙,它可以加起来

    但是,您应该关注存储在viewstate中的值,而不是键,因为这将占用更多的空间

    一些参考资料:


    这可能会对您有所帮助:以前未找到此项。谢谢在代码可读性方面,这也是我关注的问题之一。服务器端我们设置常量来解决这个问题。记住这一点:始终编码,就好像最终维护你的代码的人是一个知道你住在哪里的暴力精神病患者。谢谢你的链接。肯定给了我一些选择。