使用ASP.NET控件对性能的影响

时间:2009-03-08 23:24:20

标签: asp.net performance viewstate

通过页面上的用户控件,我了解每个控件都会通过在ViewState中存储自己的状态来影响内存使用。我的问题是,多少钱?

例如 - 我在我的母版页上有一个反馈表单作为控件。默认设置为Visible =“false”。用户单击反馈按钮,控件在需要时变为可见。

通过控制坐在每个页面上(因为它位于母版页中)会产生相对性能影响,但是不可见?我正在开发的网站可能会有大量的流量,我想知道如果事情变得缓慢,我是否会让自己陷入困境。

由于

2 个答案:

答案 0 :(得分:2)

性能可能会受到服务器和客户端的影响。主要是您希望减少HTML的数量,包括发送到客户端的viewstate。如果它位于每个页面上,那么您将比实际需要更频繁地发送此视图状态信息。

我认为你应该有一些逻辑确保反馈表格控件只被添加到反馈页面。而不是使用visible =“false”,将它放在它自己的页面上并链接到它,或者动态地将控件添加到页面。

主要的好处是减少带宽使用,并在客户端上更快地呈现页面。次要好处包括更容易调试和更清晰的代码呈现给客户端。

对于所有性能问题,您应该测试性能并根据硬数据做出判断。在这种情况下,计算出客户端上viewstate的大小,然后乘以请求数,以查看服务器上带宽使用的大小。在客户端上使用FireBug之类的工具来了解客户端收到的整体页面大小。

答案 1 :(得分:0)

这取决于控制。具有数百行的Datagrid可能会生成100k的viewstate。另一方面,复选框不会产生太多。

您可以将反馈表单控件放在空的aspx页面上,在浏览器中访问它并检查__viewstate隐藏字段。这是您在视图状态下向每个页面添加的反馈表单量。然后你必须决定它是否可以接受。

我不会在一开始就想到这样的优化。如果以后它会变慢,你可以随时将表单更改为纯html并使用ajax或其他东西将数据发布到服务器。只要是用户控制而不是复制粘贴的内容,就可以轻松优化