Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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
ASP.NET页面包含动态元素,加载需要时间_Asp.net_Performance_Pageload - Fatal编程技术网

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

ASP.NET页面包含动态元素,加载需要时间,asp.net,performance,pageload,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[] chk

我正在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>

受保护的无效页面加载(对象src、事件参数e){
//查询数据库以获取行和列的数据
复选框[]chkBox=new复选框[行*列];//创建复选框集合
//在双for循环中迭代查询集以创建动态复选框
}
现在我有行数=20,列数=10,但它可以增加(列数更可能增加)

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

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

提前谢谢

cheers

创建控件(复选框)并从服务器端添加到保持架非常便宜。考虑到你不是在创造数十亿美元

生成的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"
            });
        }
    }
}
protectedvoid页面加载(对象src,事件参数e){
对于(int i=0;i
考虑到
holderPanel
是一个服务器端
asp:Panel
或一个简单的
Div
,带有
ID=“holderPanel”
runat=“server”

创建控件(复选框)并从服务器端添加到保持架是非常便宜的。考虑到你不是在创造数十亿美元

生成的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"
            });
        }
    }
}
protectedvoid页面加载(对象src,事件参数e){
对于(int i=0;i

假设
holderPanel
是一个服务器端
asp:Panel
或一个简单的
Div
,带有
ID=“holderPanel”
runat=“server”

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

编辑:
好吧,你不是在告诉我们整个故事。这个页面还在做什么?这些控制装置要去哪里?我只是在一个测试页面上使用类似于上面的代码进行了尝试,它在瞬间呈现出来


就像我说的。。。启用跟踪,并找出真正占用所有时间的内容!使用该工具,这就是它存在的原因。

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

编辑:
好吧,你不是在告诉我们整个故事。这个页面还在做什么?这些控制装置要去哪里?我只是在一个测试页面上使用类似于上面的代码进行了尝试,它在瞬间呈现出来


就像我说的。。。启用跟踪,并找出真正占用所有时间的内容!使用该工具,这就是它存在的原因。

尝试禁用Firebug&看看是否仍然需要那么长的时间。还要再次检查代码是否生成了比预期更多的复选框

尝试禁用Firebug&看看是否仍然需要那么长时间。还要再次检查代码是否生成了比预期更多的复选框

我正在看以下评论:

// Query the database to get the data for rows and columns
您可以忽略这一点,但当网页加载缓慢时,有9/10的情况是因为它执行了一些缓慢的数据库操作

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


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

我在看以下评论:

// Query the database to get the data for rows and columns
您可以忽略这一点,但当网页加载缓慢时,有9/10的情况是因为它执行了一些缓慢的数据库操作

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


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

我建议将数据绑定到复选框列表-但是-页面加载事件中没有足够的信息说明页面加载需要4分钟的原因。我建议将数据绑定到复选框列表-但是-页面加载事件中没有足够的信息说明页面加载的原因花4分钟加载。GetTest.aspx是Firebug的Net选项卡上的标签,显示获取Test.aspx页面所需的时间。我认为问题可能不在复选框生成中,而是在db层。GetTest.aspx是Firebug的Net选项卡上的标签,显示获取Test.aspx页面所需的时间