移动端,首次加载同时请求数不能超过4个
移动端的性能优化问题:
移动页面的速度跟三个因素有关,分别是:移动网络带宽速度,设备性能(CPU,GPU,浏览器),页面本身。
1.图片加载
1)预加载,有两种实现方式:
a.显性加载
b.隐性加载
加载第一张图片时,已经预先加载了第二张图片。
2)按需加载
先加载首屏,就是lazyload,滚屏加载,滚动到当前位置时加载图片。
响应式加载图片,利用css的@media或者js判断分辨率,从而引入不同的图片。
3)对图片进行压缩处理
2.点击事件优化:
移动端用touch事件代替click事件,因为在移动端click会有300ms左右的延迟,所以应用touchstart,touchmove,touchend。
移动浏览器,事件执行顺序是touchstart > touchend > click
涉及到关键词:
300ms延迟:
当点击页面的时候移动端浏览器并不能立刻判断用户是确实要打开链接,还是想要进行双击操作,因此会等待约300ms,以判断用户是否再次点击了屏幕。
解决方案:用fastClick代替。
https://github.com/ftlabs/fastclick
点击穿透:
假如页面上有两个元素A和B。B元素在A元素之上,在B元素的touchstart事件上注册了一个回调函数,比如里边是隐藏B,当我们点击B元素时,当touchstart事件把B隐藏后,隔了300ms,浏览器触发了cilck事件,但是B元素已经隐藏了,所以事件被派发到A元素身上,这就是点透。
解决方案:
1)用touchend事件代替tap事件,并阻止掉touchend的默认preventDefault();
$("a").on("touchend",function(event){
event.preventDefault();
});
2)延迟一定的时间(300ms+)来处理事件
$("a").on("tap",function(event){
setTimeout(function(){
//处理事件
},310);
});
3)利用fastclick.js代替click
引入js后直接给body添加事件
$(function(){
FastClick.attach(document.body);
});
或者页面加载时
window.addEventListener("load",function(){
FastClick.attach(document.body);
});
3.动画优化
1)尽量使用css3动画
优点:不占用js主线程;浏览器对动画做优化;
如有状态监听可用js控制。
2)适当使用canvas动画
优点:可规避渲染树的计算渲染更快些;
缺点:开发成本高,维护较麻烦;
5个元素以内使用css3动画,5个以上使用canvas动画。
3)合理使用RAF(requestAnimationFrame)
优点:能解决脚本问题引起的丢帧,卡顿问题;支持中间状态。
缺点:android4.3下不兼容
4.CSS,js等文件引入到html页面中,最好不要使用内联
<meta name=“viewport” content=“width=device-width,initial-scale=1”>
参考: