前端优化
前端优化
图片优化
- 小图使用雪碧图/iconFont/base64内联
- 图片压缩
- 图片懒加载
1 | 一张图片就是一个<img>标签,浏览器是否发起请求图片是根据<img>的src属性,所以实现懒加载的关键就是,在图片没有进入可视区域时,先不给<img>的src赋值,这样浏览器就不会发送请求了,等到图片进入可视区域再给src赋值。图片懒加载的原理就是我们先设置图片的 data-src 属性。 |
1 | // onload是等所有的资源文件加载完毕后再绑定事件 |
- 使用img的srcset,根据不同分辨率显示不同尺寸图片,既能保证显示效果,又能节省带宽,提高加载速度
1 | <img src="images/gun.png" |
CSS优化
- CSS写在头部
- 合理使用选择器
- 避免行内样式。行内样式的缺点:1.多个元素难以共享样式,不利于代码复用;2.HTML和CSS代码混杂,结构样式没有分离,不利于程序员和搜索引擎阅读。
- 移除空置的CSS规则
JS优化
- JS放在body底部
- JS用defer放在头部,提前加载时间,又不阻塞dom解析
渲染优化
- 尽量减少重绘和重排
- CSS属性简写:比如border、font、background
- 使用documentFragment批量操作DOM
- dom可以先隐藏,修改完成后再替换回去
- 动画尽量使用requestAnimationFrame
首屏优化
原则:显示快、滚动流畅、懒加载、渐进展示
- 服务端渲染SSR减少白屏时间
- 将关键CSS内联,可以减少加载和渲染时间
打包优化
- tree-shaking移除第三方库中不需要使用到的代码
- 缩小范围:oneOf、各种loader配置include和exclude, noParse跳过文件
- 开启缓存:loader开启cache
- 多线程加速
- JS使用chunkhash,不使用hash;css文件使用contenthash,不使用chunkhash,不受JS变化影响
react优化
- 路由组件懒加载
- 类组件添加shouldComponentUpdate或使用PureComponent组件
- 函数组件使用useMemo
- 列表项添加key,保证唯一
- 避免使用内联函数
- 使用React Fragments避免额外标记
SEO优化
- 添加各种meta信息
- 服务端渲染
加载优化
- 压缩合并
- 代码分割,可以基于路由或动态加载
- 第三发模块放在CDN
- 可以使用prefetch预加载,在分步场景中适合
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Cheyennee!