前端性能优化都有啥

266 阅读2分钟

前端优化

image.png

image.png

网络层面

请求过程优化
  1. 减少 HTTP 请求

  2. 使用 HTTP2

  3. 使用服务端渲染

    客户端渲染: 获取 HTML 文件,根据需要下载 JavaScript 文件,运行文件,生成 DOM,再渲染。 服务端渲染:服务端返回 HTML 文件,客户端只需解析 HTML。

    优点:首屏渲染快,SEO 好。
    缺点:配置麻烦,增加了服务器的计算压力。

  4. 静态资源使用 CDN

  5. DNS 预解析 (采用DNS Prefetch 一种DNS 预解析技术)

<link rel="dns-prefetch" href="www.baidu.com" />
//只有部分浏览器支持

6.压缩 (采用Gzip压缩)

减少不必要的请求(浏览器缓存)
  1. 强缓存
  2. 协商缓存(对比缓存)
  3. CDN缓存
  4. 预加载
<link rel='prefetch' href='main.js'>
//只有部分浏览器支持

5. 预渲染

<link rel='prerender' href='http://www.a.com'> 
//只有部分浏览器支持

6. 应用缓存(Cookie,Storage,Service Worker)

浏览器渲染层面优化

1. 优化资源加载

  • CSS文件放在head中,先外链,后本页  
  • JS文件放在body底部,先外链,后本页
  • 异步script标签 (defer: 异步加载,在HTML解析完成后执行。defer的实际效果与将代码放在body底部类似async: 异步加载,加载完成后立即执行)

2.减少重绘回流

避免使用层级较深的选择器,避免使用CSS表达式,元素适当地定义高度或最小高度,给图片设置尺寸,不要使用table布局,能够使用CSS实现的效果,尽量使用CSS而不使用JS实现

前端性能优化(一)

前端性能优化的七大手段

前端性能优化 24 条建议(2020)

面试简单版回答

1. 加载性能(关键指标:FP/FCP/LCP)

  • 资源压缩:通过Webpack的TerserPlugin压缩JS,CSSNano压缩CSS,ImageMin压缩图片
  • 按需加载:路由级(React.lazy)和组件级动态导入,第三方库按需引入(babel-plugin-import)
  • 预加载策略<link rel="preload">关键资源,prefetch非关键资源
  • CDN+HTTP/2:静态资源走CDN,利用HTTP/2多路复用特性

2. 运行时性能(关键指标:FID/CLS)

  • 虚拟列表:使用react-window处理万级数据列表,DOM节点恒定
  • 防抖节流:滚动/输入等高频事件必须优化,如lodash的实现
  • CSS优化:减少选择器复杂度,避免频繁重排(如使用transform代替top/left)
  • Web Worker:将大数据计算/解析移出主线程
  • 动画性能:优先使用CSS transform/opacity属性,复杂动画使用requestAnimationFrame

3. 缓存策略

  • Service Worker:实现离线缓存(PWA),workbox-webpack-plugin简化开发
  • HTTP缓存:强缓存(Cache-Control: max-age)+协商缓存(ETag)组合策略
  • 数据缓存:接口数据合理使用IndexedDB/localStorage缓存