-
前端优化总结
-
js优化:
- 减少重绘和回流
a) 避免不必要的Dom操作
b) 尽量改变Class而不是Style,使用classList代替className
c) 避免使用document.write
d) 减少drawImage
《页面重绘和回流以及优化》
- 缓存Dom选择与计算
每次Dom选择都要计算,缓存他
- 缓存列表.length
每次.length都要计算,用一个变量保存这个值
- 尽量使用事件代理,避免批量绑定事件
- 尽量使用ID选择器
- TOUCH事件优化
使用touchstart、touchend代替click,因快影响速度快。但应注意Touch响应过快,易引发误操作
- 减少阻塞
- 把所有变量声明统一放到函数的起始位置 (在后部声明的变量也会被JS视为在头部定义,由此会产生问题)
- 不要扩充内置原型(虽然给Object(), Function()之类的内置原型增加属性和方法很巧妙,但是会破坏可维护性)
- 优化书写方法
- 《编写可维护的代码》
- 单变量模式
- Hoisting:把所有变量声明统一放到函数的起始位置 (在后部声明的变量也会被JS视为在头部定义,由此会产生问题)
- 不要扩充内置原型(虽然给Object(), Function()之类的内置原型增加属性和方法很巧妙,但是会破坏可维护性)
- 不要用隐含的类型转换
- 不要用 eval()
- 用 parseInt() 进行数字转换
- (规范)左大括号的位置
- 构造器首字母大写
- 写注释
- 不要用 void
- 不要用 with 语句
- 不要用 continue 语句
- 尽量不要用位运算
- 《js 压缩》
- 《JavaScript 秘密花园-数组》
-
jQuery优化
-
CSS优化
-
- 避免使用CSS表达式
- 避免在HTML标签中写style,这样会影响CSS的渲染。
- 移除空的CSS规则,空的CSS规则增加了CSS文件的大小,且影响CSS树的执行
- 正确使用Display的属性
Display属性会影响页面的渲染,因此请合理使用
a) display:inline后不应该再使用width、height、margin、padding以及float
b) display:inline-block后不应该再使用float
c) display:block后不应该再使用vertical-align
d) display:table-*后不应该再使用margin或者float、
- Float在渲染时计算量比较大,尽量减少使用
- Web字体需要下载,解析,重绘当前页面,尽量减少使用
- 过多的Font-size引发CSS树的效率
- 为了浏览器的兼容性和性能,值为0时不要带单位
- 标准化各种浏览器前缀
a) 无前缀应放在最后
b) CSS动画只用 (-webkit- 无前缀)两种即可
c) 其它前缀为 -webkit- -moz- -ms- 无前缀 四种,(-o-Opera浏览器改用blink内核,所以淘汰)
- 高级选择器执行耗时长且不易读懂,避免使用。
- 外链 CSS 中避免 @import 引入。
- 《为什么每个前端开发者都要理解页面的渲染》
- 《优化浏览器渲染》
-
SEO优化
-
WEB性能优化
-
1.图片优化:
- 优先使用CSS效果、CSS动画来替代图片,避免在低端机上使用大量CSS3渐变阴影效果,可考虑降级效果来提升流畅度。
- 移动端可以使用网络字体来替代图片。
- 使用base64来优化背景图片(最好的小的背景图片或者图标,<img>标签最好不要使用)
- 合并小图片使用雪碧图。
- 避免图片和iFrame等的空Src
- 空Src会重新加载当前页面,影响速度和效率.在使用图片异步加载时,可以选将src设置为一个一像素的小图。base64形式的。
- 尽量避免重设图片大小
- 重设图片大小是指在页面、CSS、JavaScript等中多次重置图片大小,多次重设图片大小会引发图片的多次重绘,影响性能。
- 颜色丰富的照片,JPG是通用的选择:
- 人眼的结构很适合查看JPG压缩后的照片,可以充分的忽略并在脑中补齐细节
- JPG在压缩率不高时保留的细节还是不错的
- WebP能够比JPG减少30%的体积,但目前兼容性较差(Chrome,Opera,Android Chrome,Android Browser).
- 如果需要较通用的动画,GIF是唯一可用的选择:(APNG只有在Firefox,Safari,iOS Safari上有效,且是无损压缩)
- GIF支持的颜色范围为256色,而且仅支持完全透明/完全不透明
- GIF在显示颜色丰富的动画时可能出现颜色不全、边缘锯齿等问题
- 如果图片由标准的几何图形组成,或需要使用程序动态控制其显示特效,可以考虑SVG格式(IE8+)
- SVG是使用XML定义的矢量图形,生成的图片在各种分辨率下均可自由放缩
- SVG中可以通过JavaScript等接口自由变换图片特效,可以完成其中部分元素的自由旋转、移动、变换颜色等
- 如果需要清晰的显示颜色丰富的图片,PNG比较好
- PNG-8能够显示256种颜色,但能够同时支持256阶透明,因此颜色数较少但需要半透明的情景(如微信动画大表情)可以考虑PNG-8
- PNG-24可以显示真彩色,但不支持透明,颜色丰富的图片推荐使用(如屏幕截图、界面设计图)
- PNG-32可以显示真彩色,同时支持256阶透明,效果最好但尺寸也最大
- 《响应式图片》
- 图片优化工具
- 实践
-
2.工程化前端部署:
-
3.性能测试工具
-
4.浏览器缓存
-
5.压缩HTML,CSS,JS
- 减少资源大小可以加快网页显示速度,所以要对HTML、CSS、JavaScript等进行代码压缩,并在服务器端设置GZip
-
6.加载优化
- 按需加载(注意页面重绘影响性能)
- 滚屏加载
- 预加载(提前加载下一页)
- 减少请求(重要)初始请求不多于4个。
-
7.渲染优化
- HTML使用Viewport
Viewport可以加速页面的渲染,请使用以下代码
<meta name=”viewport” content=”width=device-width, initial-scale=1″>
- 减少Dom节点
Dom节点太多影响页面的渲染,应尽量减少Dom节点
- 动画优化
a) 尽量使用CSS3动画
b) 合理使用requestAnimationFrame动画代替setTimeout
c) 适当使用Canvas动画 5个元素以内使用css动画,5个以上使用Canvas动画(iOS8可使用webGL)
- 高频事件优化
Touchmove、Scroll 事件可导致多次渲染
a) 使用requestAnimationFrame监听帧变化,使得在正确的时间进行渲染
b) 增加响应变化的时间间隔,减少重绘次数
- GPU加速
CSS中以下属性(CSS3 transitions、CSS3 3D transforms、Opacity、Canvas、WebGL、Video)来触发GPU渲染,请合理使用
PS:过渡使用会引发手机过耗电增加
-
8.其它
- 减少cookie:Cookie会影响加载速度,所以静态资源域名不使用Cookie
- 避免重定向:重定向会影响加载速度,所以在服务器正确设置避免重定向
- 异步加载第三方资源:第三方资源不可控会影响页面的加载和显示,因此要异步加载第三方资源
- 服务端开启keep-alive
参考资料:
《Web性能优化:图片优化》
《移动H5前端性能优化指南》
-
相关阅读:
JavaTPoint 移动开发教程【翻译完成】
JavaTPoint 数据库教程【翻译完成】
JavaTPoint PHP 中文教程【翻译完成】
JavaTPoint .NET 中文教程【翻译完成】
JavaTPoint 大数据和云计算中文教程【翻译完成】
python基础学习笔记二:字符串相关知识
python基础学习笔记(一):基本介绍
python 基础学习三:数据结构对比
python 基础学习五:关键字
python基础学习笔记四:PEP8 Python 编码规范
-
原文地址:https://www.cnblogs.com/towersxu/p/4364996.html
Copyright © 2020-2023
润新知