javascript - UI样式计算过多导致浏览器加载过慢,IE尤其严重,求前辈指导
習慣沉默
習慣沉默 2017-07-05 10:40:49
0
3
992

前段时间使用EasyUI+jQuery的方式做了个页面,一开始没感觉加载有什么问题,但随着数据越来越多,加载时间变慢地非常明显,Chrome通常是二十几秒,IE在打开性能分析的情况下居然是3分多钟。。。。具体如图


经过测试,加载时间与数据量有直接关系,但又不是因为获取数据资源时间过长,是渲染这些数据出了问题,EasyUI通过JS 操作DOM、修改样式过多。请问各位大神,这个怎么破,先感谢各位!!

習慣沉默
習慣沉默

全部回复(3)
世界只因有你

看是那个方面,总的来说2个方面着手:

1、样式跟脚本,有min版本的js就引用min版本,或者去找第三方压缩插件,还一种解决方案就是使用依赖加载。
2、如果是绑定数据慢了,你就去调试,看看是哪一步数据加载慢了 是数据查询还是数据格式转换,去优化查询字段,条件 表链之类的。

归根结底,差不多就这两方面。至于你说的渲染数据出问题,你一个页面能展示数据撑死了能有多少? 难不成你没有进行分页 渲染数据你可以在你认为耗时的地方进行js的日志输出 一看就知道了

Peter_Zhu

给几点思路:
1.尽量压缩CSS/JS为基本
2.JS代码层面性能优化,减少DOM操作.
3.数据计算不要放到前端来做,计算之类的放在后端进行。

Ty80

根据时间来看,有点过长,考虑两种情况:
1)样式计算存在明显的不合理的地方,比如样式可以一次赋值的变成了多次赋值

多次赋值

element.style.borderColor = '#f00';
element.style.borderStyle = 'solid';
element.style.borderWidth = '1px';

一次赋值

 element.style.cssText += 'border: 1px solid #f00;';

一次可以实现完成取值,变成了多次

多次取值

var width1=element.style.width+1;
var width2=element.style.width+2;

一次取值

var width=element.style.width;
    var width1=width+1;
    var width2=width+2;

2)排除情况1的不合理之处,就得考虑业务设计、结构设计是否合理了,因为时间太长了,建议考虑一哈设计上是否合理

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板