ASP.NET - 提高性能

5
有没有理由使用标准的HTML控件(input type=text,input type=checkbox)而不是ASP.NET控件(asp:TextBox,asp:CheckBox)来提高性能?
4个回答

5

在我看来,这只是一种微小的优化。虽然可以提高性能,但并不明显。另一方面,您会失去服务器控件所提供的很多灵活性。

您可以尝试通过禁用不需要视图状态的控件来减少视图状态的大小。这将减少生成页面的大小并提高性能。


4
ASP.NET用户控件会自动关联ViewState,除非您明确设置。
EnableViewState="False"

因此,如果您有大量控件,则会使底层页面的大小膨胀。一般而言,只使用满足您需求的内容即可。

  • 您是否需要在代码后端访问用户控件?
  • 您是否需要控件在post-back等情况下保持值?

在大多数情况下,这并不会有什么区别,但是如果您不需要这些功能,请保持页面简洁。


1

对于性能优化,一如既往的:它取决于具体情况。在您的项目中进行测试,看看是否有所改善。


1

另外,使用 .net 4.0 之后,使用服务器控件的缺点也不再存在,因为您可以将 ClientIDMode 设置为 Static,这将使您完全控制控件上的 ID。以前,仅使用标准的 textboxbutton(不带 viewstate)仍然会呈现疯狂的不可读 ID,因为 Naming Containers 的工作方式。但是那些日子已经过去了 :)

请记住您的三个选项:

  1. 使用常规 html,无法在服务器上引用。
  2. runat="server" 添加到现有的 html 标签中(例如:<input>),您将能够将其作为 HtmlControl 访问。
  3. 使用 asp.net 标记(<asp:* runat="server" />

第三种选项的缺点是您并不总是知道渲染后的 html 标记会是什么样子,并且对其有较少的控制权。我个人只在需要更高级的控件(如 GridViewFormView 和第三方控件)时才使用选项 3。对于我需要在服务器上引用的普通 html 标记,我更喜欢选项 2。

关于性能方面,我主要会关注渲染输出的情况,客户端渲染的额外负载等。相比于ASP.Net已经拥有的不同缓存技术,服务器使用其中一种方法所需的CPU时间可以说是次要的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接