ASP.NET页面包含动态元素,加载需要时间

时间:2010-02-10 15:08:37

标签: asp.net performance pageload

我在test.aspx页面上动态创建一个复选框表。表的维度(行数和列数)通过查询数据库来确定。

在test.aspx页面中,我执行以下操作:

<script language="C#" runat="server">

protected void Page_Load ( object src, EventArgs e ) {
   //Query the database to get the data for rows and columns

   CheckBox[] chkBox = new CheckBox[rows * columns]; //creates a collection of checkboxes

   //Iterate over the query set in a double for loop to create dynamic checkboxes
}

</script>

现在我的行​​数= 20且列数= 10,但它可能会增加(更有可能使用列)。

我使用Firebug中的Net选项卡确定不同事件所花费的时间,发现GetTest.aspx花了将近4分钟,等待的时间太长了。

有没有办法缩短页面加载时间?我创建动态复选框的方法是否正确?

提前致谢。

欢呼声

4 个答案:

答案 0 :(得分:3)

我正在看这条评论:

// Query the database to get the data for rows and columns

你可以掩饰这一点,但是当网页加载速度缓慢时,它会在10次中出现9次,因为它正在执行一些缓慢的数据库操作。

我的猜测是(a)您的数据库查询效率非常低,可能是由于缺少索引,或者(b)您在某个循环内部运行数据库查询(非常糟糕)。

ASP.NET可以在不到1秒的时间内创建数千个复选框。它只是类实例化。问题出在其他地方。

答案 1 :(得分:1)

在页面上启用ASP.NET跟踪并查看所有时间花在哪里。对于任何页面来说,四分钟当然太长了。你列出两个虽然... test.aspx和GetTest.aspx ...什么是GetTest.aspx?

编辑:
好的,你不是在这里告诉我们整个故事。这个页面还有什么作用?这些控制在哪里?我只是在测试页面上使用类似于上面的代码尝试了这个,并且它在瞬间呈现。

就像我说的那样......启用TRACE并找出真正占用的东西!使用该工具,这就是它的原因。

答案 2 :(得分:0)

创建控件(CheckBox)并从服务器端添加到持有者非常便宜。考虑到您没有创建数十亿

生成的HTML不应该大到足以在本地计算机上花费4分钟。

请检查生成的HTML大小以验证其质量。

如果我是你,那么我会在我的服务器上编写以下代码。请考虑一下。

protected void Page_Load(object src, EventArgs e) {
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < columns; j++) {
            holderPanel.Controls.Add(
                    new CheckBox { 
                            ID = string.Format("chk{0}{1}", i, j), 
                            Text = "some text"
            });
        }
    }
}

考虑holderPanel是服务器端asp:Panel还是简单Div ID = "holderPanel"runat="server"

答案 3 :(得分:0)

尝试禁用Firebug&amp;看看它是否还需要那么久。还要仔细检查您的代码是否生成了比预期更多的复选框。