【问题标题】:HtmlGenericControl("a") vs. HtmlAnchorHtmlGenericControl("a") 与 HtmlAnchor
【发布时间】:2011-10-28 04:32:30
【问题描述】:

我正在研究为什么我的一个应用程序运行缓慢。应用程序生成并显示一个网格,并用工作任务填充它(呈现为表格单元格)。在每个任务中都有一个<a href="...,它会显示有关该任务的更多信息。

由于这一切都是从代码隐藏动态构建的,我使用HTMLTableRows/Cells 创建行和单元格,然后使用Controls 属性添加HTMLAnchors。每当我设置属性时,我都会使用HTMLAnchor.HRefHTMLTableCell.ColSpan 等。

我注意到,如果我使用通用 HTMLGenericControl,然后使用它的 Attributes 集合,例如

HTMLGenericControl a = new HTMLGenericControl("a");
a.Attributes["href"] = task.getLink();

它的运行速度比我认为做同样事情的首选方式要快得多:

HtmlAnchor a = new HTMLAnchor;
a.HRef = task.getLink();

有人对这种明显的额外“开销”的来源有任何解释吗?

编辑

如果有人对我的解释感到困惑,我为同一个项目发布了另一个问题,其中有一个screenshot

【问题讨论】:

  • 慢是什么意思?浏览器是否需要一段时间来呈现 HTML?还是生成 HTML 需要一段时间?在 system.web 部分的 Web.Config 中,添加以下 <trace enabled="true" localOnly="true" requestLimit="1000" pageOutput="true"/> ,您可以准确地看到时间花费在哪里
  • @s_hewitt 这真的很有用,谢谢。看起来最大的时间延迟是在页面加载开始和结束之间,以及渲染开始和结束之间。当我使用 GenericControl 方法时,时间几乎减半。
  • 处理页面的总时间与渲染相比如何?例如,如果跟踪中的总时间是 1 秒,但页面在浏览器中加载需要 5 秒 - 那么页面的传输很慢,或者呈现很慢。
  • @S_hewitt 忍受我 - 我必须回去工作来测试这个!会不断更新这个问题。
  • 我无法回答为什么它会更慢,但我的想法是,在控制方面,最小的公分母总是会更快;也就是说,纯 HTML 将比 ASP.NET 控件更快。同样,HTMLAnchor 可能是一个或多个基本控件类的子类(这会增加开销)。但是通用控件可能只是使用HTML编写器来呈现你想要的标签和你指定的属性,不多也不少。

标签: c# asp.net html performance


【解决方案1】:

@subkamran 我也有同样的想法,但是在查找之后,实际上HTMLAnchorHTMLGenericControl 都是从同一个父级子类:HTMLContainerControl。一个显着的区别是HTMLAnchor 实现IPostBackEventHandler 来处理“ServerClick”事件。这肯定会增加一些缓慢...

【讨论】:

    猜你喜欢
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    • 2011-09-28
    相关资源
    最近更新 更多