1、使用懒加载
- 组件懒加载
const xxx =()=>import('./components/xxx.vue')
- 路由懒加载
2、减少或合并DOM操作或使用虚拟DOM
// 不好的方式
//var elem = $('#elem');
//for (var i = 0; i < 100; i++) {
// elem.append('<li>element '+i+'</li>');
//}
// 好的方式
var elem = $('#elem' ),
arr = [];
for (var i = 0; i < 100; i++) {
arr.push('<li>element ' +i+'</li>' );
}
elem.append(arr. join(''));
3、减少监听器,使用事件委托
function listen(element, eventType, selector, fn) {
element.addEventListener(eventType, e => {
let el = e.target
while (!el.matches(selector)) {
if (element === el) {
el = null
break
}
el = el.parentNode
}
el && fn.call(el, e, el)
})
return element
}
listen(ul, 'click', 'li', ()=>{})
4、对大量数据计算使用缓存
// data.length === 100000
for(var i = 0;i < data.length;i++){
// do something...
}
//上面的代码没有下面的好
for(var i = 0,len = data.length;i < len;i++){
// do something...
}
5、使用setTimeout降低调用接口频率
6、CSS、JS请求优化
-
使用CDN:用CDN请求静态资源同时可以增大同时下载数量,内容分发网络(CDN)可以使请求总时间降低
-
CSS放在head里:因为chrome需要下载完所有的css后才渲染页面
-
JS放在body里的最后:JS放后面保证用户能尽早看到完整的页面,再继续下载js文件。
7、优化TCP协议
- 使用keep-alive:连接回复加上请求头:keep-alive。第一次请求不断开,第二次请求复用。
- 使用http 2.0版本:复用率会更高
8、用户体验上
- 用户看到哪些内容就请求哪些内容
- 加一个loading动画用户会感觉时间变快
9、优化DNS查询
- 减少域名:尽量把所有的资源放在一个域名下