前端性能优化---首屏优化

120 阅读1分钟

面试回答

先分析性能(lighthouse),定标准,实践标准

预加载 preload

加载关键CSS

webpack-css-pick-plugin提取关键CSS,将提取到的CSS内嵌插入到节点

http/2 server Push

延迟加载 script defer async

预渲染

prerender

webpack prerender方案

SSR

react next vue nuxt

按需加载

react Suspense+React.lazy

tree- shaking

CDN

缓存

vite-bundle-analyzer

资源太大

---包分 chunk

  • 懒加载
  • 公共资源 vender
  • 缓存(强缓存、协商缓存、策略缓存(service-worker))
  • 服务端渲染
  • 局部SSR(落地页、广告页、营销活动页)
  • PWA

指标衡量

  • FCP
  • LCP
  • FMP

监听上报 web-tracker

性能采集:performance Mutation Observer 用户行为采集:无痕埋点、手动买点、可视化买点 异常采集: 错误边界、异常捕获

framer

定标准

  • LCP(最大内容渲染)
  • FP首屏渲染
  • FMP
  • FCP首次内容渲染
  • TTI交互时间

异常监控

  • 白屏
    • MutationObserver
  • 内存溢出
  • 资源加载异常
    • img 资源
    • font资源
  • JS执行异常
    • 异常监听
  • 异步处理异常
    • promise
    • async/await
  • 网络异常
    • ajax
    • fetch

性能优化做了什么

  • 打包构建,工程层面
  • 代码
    • 虚拟列表
    • 懒加载
    • tree-shaking
    • 异步加载
  • 网络
    • http2
    • cdn
    • preload prefetch

用户行为埋点

SDK埋点

指标收集

浏览器提供一个对象(Performance),用于收集性能指标

sentry

异常监控实现

设计过大型数据流相关系统

上报的方式

  • img 动态创建img,src为上报地址(跨域)
  • fetch
  • navigator.sendBeacon

整体流程设计(kafka,Flink,clickhouse)

  • 基础服务:nodejs、nginx、微服务架构microservice
  • mysql,mongodb
  • 消息队列:kafka,rabbitmq,rocketmq
  • 实时数据加工:Flink,spark,storm
  • 数据落库:hbase,clickhouse
  • 查询:clickhouse
  • 可视化:json,echarts,