为什么老是会谈从url输入到返回请求的过程

140 阅读2分钟

关于这个问题相信大家并不陌生,基本上都是大家都会有一模一样的答案,但是可曾想过为什么会总问这个问题

关于这个问题的一点猜想----性能

在一个请求的过程中,我们在那个过程可以做到性能优化。首先说说前端的性能准则:

RAIL是一个以用户为中心的性能模型,分别是Response(响应)、Animation(动画)、Idle(空闲)、Load(加载)。

Response 100ms响应用户的输入、反馈

Animation 每一帧16ms

Idle 应把任务分割成执行时间小于50ms的代码片段

Load小于1s的加载,最差不超过5s

其次,前端的性能指标也不能忽视,下面仅仅列举了个人认为重要的指标。

FCP (fisrt contentful paint)首次内容绘制

LCP(largest contenful paint)最大内容绘制

FID (first input delay)首次输入延时

TTI(Time to Interactive)首次可交互时间

CLS (cumulative layout shift)累计布局偏移

那么现在就谈一谈URL输入到返回可以做哪些性能优化

首先是dns解析层面

  • 减少dns查找
  • dns-prefetch
  • 延长dns解析时间
  • 尽可能使用A或者AAA记录代替CNAME
  • 使用cdn加速域名
  • 清除dns缓存

其次,http层面

  • 压缩传输的数据资源(GZip压缩方式)
  • 响应数据压缩处理
  • 使用http缓存,预估缓存时效,控制中间代理的缓存,规划缓存的层次结构
  • 拆分源码分包加载

最后,页面渲染层面

  • HTML文档结构层次尽量少,最好不深于六层;
  • 脚本尽量后放,放在前即可;
  • 少量首屏样式内联放在标签内;
  • 样式结构层次尽量简单;
  • 在脚本中尽量减少DOM操作,尽量缓存访问DOM的样式信息,避免过度触发回流;
  • 减少通过JavaScript代码修改元素样式,尽量使用修改class名方式操作样式或动画;
  • 动画尽量使用在绝对定位或固定定位的元素上;
  • 隐藏在屏幕外,或在页面滚动时,尽量停止动画;
  • 尽量缓存DOM查找,查找器尽量简洁;