ASP.NET页面包含动态元素,加载需要时间
我正在test.aspx页面上动态创建一个复选框表。表的维度(行和列计数)通过查询数据库来确定 在test.aspx页面中,我执行以下操作: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
<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页面所需的时间