前端性能优化
前端性能优化的手段
减少 http 请求
- base64 处理图片
- 减少重定向
- 使用缓存
- 不使用 css 的 @import
减少资源太小(压缩)
- webpack
压缩 html HtmlWebpackPlugin 配置 minify
压缩 css optimize-css-assets-webpack-plugin
压缩 js mode: ‘production’ (自动使用 terser-webpack-plugin)
- 开启 gzip 编码
开发模式下:webpack-dev-server 配置 compress: true
生产模式下:服务端配置,如 express 使用 compression 中间件
优化网络连接
- 内容分发网络 CDN
根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上
- DNS 预解析
DNS 预解析就是根据浏览器定义的规则,提前解析之后可能会用到的域名,使解析结果缓存到系统缓存中,缩短DNS解析时间,来提高网站的访问速度
方法是在 head 标签里面写上几个 link 标签
1 |
|
对以上几个网站提前解析 DNS,由于它是并行的,不会堵塞页面渲染,这样可以缩短资源加载的时间
优化资源加载
- 资源加载位置
通过优化资源加载位置,更改资源加载时机,使尽可能快地展示出页面内容,尽可能快地使功能可用
CSS文件放在head中
JS文件放在body底部,或者使用 defer/async
- 资源加载时机
按需加载
懒加载与预加载
减少重绘回流
避免使用层级较深的选择器
防抖节流
DocumentFragment
让DOM操作发生在内存中,而不是页面上;可以实现离线更新
- 事件代理
- 动画 GPU 加速
性能更好的API
- requestAnimationFrame来替代setTimeout和setInterval
- 使用IntersectionObserver来实现图片可视区域的懒加载
webpack优化
treeshaking 去除无用代码
文件缓存
hash chunkhash contenthash
前端性能优化
http://example.com/2022/06/24/前端性能优化/