一、加载优化——减少http请求;
减少http请求数有以下几种
- 合并图片:当图片较多的时候,像雪碧图、精灵图可以合并为一张大图,从而减少hhttp请求数。经常变化的图片不大合适,变化相对稳定的图片可以考虑。
- 合并压缩css样式表和js脚本:都是为了减少http请求。
- 首屏加载:首屏快速显示可大大的提升用户对页面速度。
- 充分利用缓存:来减少向服务器发送的请求,节省网络资源,所有静态资源都要在服务器端并设置缓存,并且尽量使用长缓存。
- 预加载:大型资源页面可以使用Loading,资源加载完成后再显示页面,但是加载时间过长,会造成负体验。
- 异步加载第三方资源:第三方资源不可控,会影响页面加载,所以要异步加载第三方资源。
二、图片优化;
图片优化的方法
- 尽可能地使用png格式的图片,他相对来说体积小,可以使用工具压缩。
- 同时在代码中进行图片的延迟加载,也叫做懒加载。
- 避免img,iframe等标签的src属性为空:空的src会重新加载当前页面,影响速度和效率。
- 图像尽量避免使用dataUrl:dataUrL图像没有使用像图像压缩算法,文件会变大,并且要解码后再渲染,加载慢耗时长。
三、开启GZIP(代码压缩)
- Gzip即数据压缩,前端生产环境中将js、css、图片等文件进行压缩,通过减少数据传输量减小传输时间,节省服务器网络带宽,提高前端性能。
三、样式表和JS文件的优化
- 头部内联的样式和脚本会阻塞页面的渲染,一般我们会把css样式表文件放在文件的头部使用link引入,这样就可以让css样式表尽早地完成下载。
- 对应的js脚本文件,一般我们把脚本放在尾部并使用异步方式加载,这样可以尽最大限度的减少样式和脚本对页面的阻塞。
四、脚本优化
- 复杂动画效果,使用绝对定位让其脱离文档流,避免循环DOM元素,用transform:translate 代替 position left、right…以此来尽量减少回流和重绘
- 缓存.length的值:每次.length计算使用一个变量保存值。
- 尽量使用事件委托:不给每个子节点单独设置事件监听器,而是设置在其父节点上,然后利用冒泡原理设置每个子节点,避免批量绑定事件以此来减少内存消耗和DOM操作
五、前端代码结构的优化
- 设置viewprot:HTML的viewport可加快页面的渲染。
- 减少DOM结点:DOM结点太多会影响页面的渲染。
- 尽量使用css3动画:合理使用requestAnimationFrame动画代替setTimeout。
- 优化高频事件:scroll、touchmove等事件尽量使用函数防抖节流等进行限制