输入URL到整个页面经历了什么过程?
加载慢,交互卡
web性能:打开速度,动画效果,表单提交,列表滚动,页面切换
定义:客观度量和可感知的用户体验
- 减少整体加载时间:减少文件体积 减少http请求 使用预加载
- 使网站尽快可用:仅加载首屏内容,其他内容懒加载
- 平滑和交互性:css代替js 减少ui重绘
- 感知表现:加载动画,滚动条,骨架屏等提示信息
- 性能测定: 性能指标、性能测定、性能监控持续优化
如何优化?
- 性能指标 - 多快算快?
- 专业的工具可量化地评估出网站或应用的性能表现
- 立足网站生命周期,分析出性能差的原因
- 技术改造,可行性分析等具体的优化试试
- 迭代优化
性能指标?
- RAIL性能模型
response 100ms以内
animation 每一帧16ms渲染
idle 执行时间小于50ms (异步切片)
load 5s以内 - 基于用户体验的核心指标
FCP LCP FID(100~300ms)TTI(4s内)TBT CLS(布局偏移) Speed Index - 新一代性能指标:Web Vitals
加载性能LCP 交互性FID 页面视觉稳定性CLS
性能测量
- 浏览器devtools调试工具
- 网络监控分析
- 性能监控分析
- 。。。
- 灯塔(Lighthouse)
https://developer.chrome.com/docs/devtools/speed/get-started/
git clone https://github.com/askwuxue/salt-resolute-icecream - 网站整体质量评估,给出优化建议
- WebPageTest
- 多测试地点
- 全面的性能报告
- 。。。
生命周期
优化方案?
- 从请求到响应的优化:DNS查询 HTTP长连接 HTTP2 HTTP压缩 HTTP缓存
- 关键渲染路径优化:是否存在不必要的重绘和回流
- 加载过程的优化:延迟加载,不在首屏展示非关键信息,占用了页面加载的信息
- 资源优化:图片、视频等不同格式类型的选择
- 构建优化:压缩合并、基于webpack构建优化方案
面试题
输入URL到整个页面经历了什么过程?
- 浏览器接收到URL,到开启网络请求线程
- 建立HTTP请求
- 服务端收到请求并转到具体处理后台
- 前后台直接HTTP交互和涉及的缓存机制
- 浏览器接收到数据包后关键渲染路径(dom cssom 渲染绘制)
- js引擎的解析过程
前端响应,性能问题优化
- DNS解析优化
- HTTP长连接
- HTTP2
- 避免重定向
- 压缩传输数据资源
- HTTP缓存
- Service Worker缓存
- CDN缓存
- Push缓存
- 服务端渲染
版权声明:本文为qq_39039128原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。