当前位置:编程学习 > C#/ASP.NET >>

页面运行速度问题

我做了一个页面,每次打开时都要好长时间,下面是一些代码:
 for (int i = 0; i < UserManager.getFloorsAll(0).Count; i++)
            {

                flr = UserManager.getFloorsAll(0)[i];

                //人数循环

                html = "<table width='100%'><tr><td align=center><table><tr>";
                for (int j = 0; j < Convert.ToInt32(Math.Pow(2, i)); j++)
                {

                    html += "<td align=center><table style='background-image: url(../image/newlogin_06.gif); background-color: transparent;width: 50px; height: 30px'><tr><td align=center>";

                    html += "<a href='Graph1.aspx?userno=" + y + "&floor=" + i + "'>" + y + "</a>";

                    html += "</td></tr><tr><td align=center>";
                    name = UserManager.getNameByNoFty(y, 0);
                    //html += "<input id='Text"+y+"' type='text' runat='server' />";
                    if (name == "")
                    {
                        html += "<a href='AddUser.aspx?userno=" + y + "&floor=" + i + "'>注册</a>";
                    }
                    else
                    {
                        html += name;
                    }
                    html += "</td></tr></table></td>";

                    y = y + 1;
                }

                html += "</tr></table></td></tr></table>";
                li.Add(html);

就是说在这里生成前台的显示内容,请问怎么样能提高页面的打开速度呢 --------------------编程问答-------------------- 你可以StringBuilder,不是+=拼接 --------------------编程问答-------------------- 放到服务器上时慢的要命,本地没事 --------------------编程问答-------------------- 两个的速度影响大吗 --------------------编程问答-------------------- 页面缓存outputcache  或生产静态页面 --------------------编程问答-------------------- 能说的详细点吗 怎么用outputcache 我没用过 如何生成静态页面 --------------------编程问答-------------------- --------------------编程问答-------------------- 你可以StringBuilder,不是+=拼接

这个是个好方法 --------------------编程问答-------------------- 学习ing --------------------编程问答--------------------
引用 3 楼 zhaozhixiao 的回复:
两个的速度影响大吗


StringBuilder比+=拼接快得多。 --------------------编程问答-------------------- String 在初始化的时候就分配好了固定存储空间,如果出现改变,只能重新分配
StringBuild在初始化的时候再分配过程中还提供了一段缓存,所以如果你的字符串是变量,使用StringBuild更有效率 --------------------编程问答-------------------- 我试了下 速度还是慢的可怜 还有别的方法吗 --------------------编程问答-------------------- --------------------编程问答-------------------- 解决不了啊 mark是什么意思啊  美女 --------------------编程问答-------------------- 学习!! --------------------编程问答-------------------- 是否以数据库有关系,如果是,最好优化下查询语句 --------------------编程问答--------------------

int count=UserManager.getFloorsAll(0).Count;
for (int i = 0; i < count; i++)


拼接用 StringBuilder

 循环最好用 foreach --------------------编程问答-------------------- 你数据量是不是很大啊,按道理应该不会慢才是啊 --------------------编程问答-------------------- 把页面输出的时间列出来,对比下. 看看是哪里出了问题. --------------------编程问答-------------------- 是数据库中的用户过多造成的 上面写的拼接和循环都用了 还是不行 现在数据库中数据至少有10几万了 --------------------编程问答--------------------
引用 16 楼 sh_suyuelin 的回复:
int count=UserManager.getFloorsAll(0).Count;
for (int i = 0; i < count; i++)


拼接用 StringBuilder

 循环最好用 foreach


foreach对速度也有影响吗 --------------------编程问答-------------------- UserManager.getFloorsAll(0)
这个取出来的是什么值 --------------------编程问答--------------------
引用 19 楼 zhaozhixiao 的回复:
是数据库中的用户过多造成的 上面写的拼接和循环都用了 还是不行 现在数据库中数据至少有10几万了

优化sql语句看看先了,  --------------------编程问答-------------------- 我觉得在asp.net里依然像asp一样用字符串拼接本身就不对吧

lz用repeater控件吧 --------------------编程问答-------------------- <%@ OutputCache Duration="60" VaryByParam="*" %> 
放在页面前面 --------------------编程问答-------------------- 很明显是线上的数据表没有加索引 --------------------编程问答-------------------- 而且这个不应该这么写.Count,这样如果有多个循环,每次都要执行一遍查询
应该是用
IEnumerable floors = UserManager.getFloorsAll(0);
然后foreach floors;


补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,