5000条数据性能测试

foreach做json转换,cs文件转成页面回发,要800毫秒。

前台JS,5000次循环渲染出来100毫秒以内就出来效果了。


记录内容:


选中radio 中某个,然后得到值的方法时这样的。


var radios = document.getElementsByName("sex");


for(var i=0;i<radios .length;i++)
{
    
    if(radios[i].checked)
    {
      alert(radios[i].value);
}
}


最好的办法就是 构造成html字符串,在指定的DIV里面做HTML代码替换


后来发现你现在这个是服务器控件。 如果不改动做做优化还有两个小点子
1.此控件用ajax做。 url指向一个ashx处理程序。 这样节省aspx的构造时间。

2.传回来的数据,做append加载。  用户不会觉得前面的100条卡,后面的js自动append上去。 下拉的时候值也都插好了。

因为是把HTML代码插入到页面上。

所以直接对本页的HTML代码做正则表达式匹配。 或者取得下拉中的HTML代码做匹配。 得到第一个出现的位置

HTML代码作为文本来看。 <option>YY</option>  Yy是你想要的字符串, 大体是这个样子,加上一些通配符什么的。 就可以得到全部的模糊匹配的 带有option的HTML代码了。 有可能是多条。 可以直接重新赋给下拉框也可以。 

还可以, 把全部的HTML代码作为JS变量存储。 然后即使查找某个基站下面的也不用回发。 直接正则匹配基站名称字符串,就可以得到此基站下面的全部内容了 。需要使用全部的时候, 直接把存储的HTML代码插入

首先,aspx页面加载时不影响,因为是ajax。其次。ashx 肯定比aspx节省时间, 因为ashx是aspx构造中的一步。咱们省略掉其他的构造,直接处理,返回,当然快。 JS做append页面相关是不断插入,根本不会造成页面卡,响应慢等问题。 

不过我建议你弄一个一直转圈的小图片。在ajax回发JS插入时显示。 在插入全部完成时隐藏。 这样比较好一点。

 d = new Date();
   s += d.getYear()+ "/";
   s += (d.getMonth() + 1) + "/";
   s += d.getDate() + "  ";
   s += d.getHours() + c;
   s += d.getMinutes() + c;
   s += d.getSeconds() + c;
   s += d.getMilliseconds();
   alert(s);


function testfor(){
 var d, s = "";
   var c = ":";
   d = new Date();
   s += d.getYear()+ "/";
   s += (d.getMonth() + 1) + "/";
   s += d.getDate() + "  ";
   s += d.getHours() + c;
   s += d.getMinutes() + c;
   s += d.getSeconds() + c;
   s += d.getMilliseconds();
   alert(s);
 for(i=0;i<5000;i++){}
  d = new Date();
   s += d.getYear()+ "/";
   s += (d.getMonth() + 1) + "/";
   s += d.getDate() + "  ";
   s += d.getHours() + c;
   s += d.getMinutes() + c;
   s += d.getSeconds() + c;
   s += d.getMilliseconds();
   alert(s);  
 
 }


执行了5000此。 50毫秒就完成了。


 为什么dropdowlist 能在js里面正常绑定为什么 radiolist就不可以呢

这个要看 最后这个控件渲染出来的 html内容。

毕竟JS是通过HTML构造的DOM 进行操作的。
如果服务器控件最终 渲染大量DIV嵌套。或者很多操作。clientID 与 最终操作的 HTML不一个位置。 

操作也就无效了

可以通过渲染后的 HTML代码看看




你可能感兴趣的:(5000条数据性能测试)