前端性能优化
来源:互联网 发布:用java从键盘输入数据 编辑:程序博客网 时间:2024/06/12 22:04
移动端,首次加载同时请求数不能超过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”>
参考:
http://isux.tencent.com/h5-performance.html
- Web 前端性能优化
- 网站前端性能优化
- Web 前端性能优化
- 前端性能优化参考资料
- 前端性能优化
- WEB前端性能优化
- 前端性能优化
- 前端性能优化原则
- 前端性能优化
- 前端性能优化
- 前端性能优化指南
- 前端性能优化
- 网站前端性能优化
- 聊聊前端性能优化
- 前端性能优化总结
- web前端性能优化
- 前端性能优化
- 前端性能优化规则
- [C++]指针和引用的区别
- codeforces100291A——Battleships
- 教你如何解锁被恶意锁定的安卓手机(亲测可用)!
- js控制文本框禁止输入特殊字符
- 【数据结构】树和二叉树(下)
- 前端性能优化
- java中==和equal()的区别
- <welcome-file>index.action</welcome-file>直接设置action,404和struts2中的解决方案()
- Day26: After holiday
- 如何让 UITableView 的 headerView跟随 cell一起滚动
- 03node4nodejsREPL(交互式解释器)
- 为什么学习lua语言
- 如何限制用户在文本框输入的字数
- 51nod-1084 矩阵取数问题 V2