我们平时在看抖音快手视频的频用时候,如果滑动到某个视频画面一直几s不动的户访化实时候 ,大概率就会划走了 ,问体所以在短视频项目中,验优画面卡顿是短视非常影响用户体验的,启播速度越快
,频用就越能留住用户。户访化实 启播速度简单来说就是问体从调用开始播放到首帧上屏的时间 ,大致可分为两部分
: 本文主要从运维排查问题的验优角度,香港云服务器从网络这部分的短视各个环节入手 ,结合vivo短视频的频用具体案例
,给大家分享下优化过程
。户访化实 我们先梳理下一次完整的验优网络请求过程
,以客户端视角为例,如下图所示: 在接入CDN的情况下,可分为几个阶段
: 针对以上阶段,分别讲下vivo短视频是如何进行优化的
。 我们在上网的时候,通常使用的方式域名
,而不是 IP 地址,因为域名方便人类记忆。那么实现这一技术的高防服务器就是 DNS 域名解析,DNS 可以将域名网址自动转换为具体的 IP 地址
。 DNS 中的域名都是用句点来分隔的,比如 www.server.com,这里的句点代表了不同层次之间的界限。在域名中,越靠右的位置表示其层级越高 。免费模板根域是在最顶层
,它的下一层就是 com 顶级域
,再下面是 server.com。 所以域名的层级关系类似一个树状结构 : 根域的 DNS 服务器信息保存在互联网中所有的 DNS 服务器中
。这样一来,任何 DNS 服务器就都可以找到并访问根域 DNS 服务器了。 因此
,客户端只要能够找到任意一台 DNS 服务器,就可以通过它找到根域 DNS 服务器,源码下载然后再一路顺藤摸瓜找到位于下层的某台目标 DNS 服务器。 浏览器首先看一下自己的缓存里有没有,如果没有就向操作系统的缓存要,还没有就检查本机域名解析文件 hosts
,如果还是没有 ,就会 DNS 服务器进行查询,查询的过程如下: 至此,我们完成了 DNS 的解析过程。现在总结一下,整个过程画成了一个图
。 DNS 域名解析的过程蛮有意思的
,整个过程就和我们日常生活中找人问路的过程类似,只指路不带路。 弄清了域名解析的工作流程,将vivo域名和头部厂商域名进行对比分析,发现vivo短视频域名解析耗时不稳定
,波动范围很大
,怀疑是某些地区用户访问量少 ,本地DNS服务器缓存命中率低导致的 ,因此我们的优化思路就是 提高本地DNS缓存命中率。 如上图所示
,提高DNS缓存命中率一个简单的办法就是添加全国范围内的拨测任务
,来进行DNS加热。 通过对调整前后的DNS解析时间进行比较 ,可以看到耗时降低了30ms左右 。 这里简单对比下 HTTP/1 、HTTP/2、HTTP/3 的性能。 HTTP 协议是基于 TCP/IP,并且使用了「请求 - 应答」的通信模式,所以性能的关键就在这两点里。 1. 长连接 早期 HTTP/1.0 性能上的一个很大的问题
,那就是每发起一个请求
,都要新建一次 TCP 连接(三次握手)
,而且是串行请求,做了无谓的 TCP 连接建立和断开,增加了通信开销。 为了解决上述 TCP 连接问题,HTTP/1.1 提出了长连接的通信方式,也叫持久连接 。这种方式的好处在于减少了 TCP 连接的重复建立和断开所造成的额外开销
,减轻了服务器端的负载 。 持久连接的特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。 2. 管道网络传输 HTTP/1.1 采用了长连接的方式,这使得管道(pipeline)网络传输成为了可能
。 即可在同一个 TCP 连接里面,客户端可以发起多个请求,只要第一个请求发出去了,不必等其回来 ,就可以发第二个请求出去
,可以减少整体的响应时间。 举例来说
,客户端需要请求两个资源。以前的做法是
,在同一个TCP连接里面
,先发送 A 请求 ,然后等待服务器做出回应 ,收到后再发出 B 请求
。管道机制则是允许浏览器同时发出 A 请求和 B 请求。 但是服务器还是按照顺序
,先回应 A 请求,完成后再回应 B 请求。要是 前面的回应特别慢,后面就会有许多请求排队等着 。这称为「队头堵塞」。 3. 队头阻塞 「请求 - 应答」的模式加剧了 HTTP 的性能问题
。 因为当顺序发送的请求序列中的一个请求因为某种原因被阻塞时,在后面排队的所有请求也一同被阻塞了
,会招致客户端一直请求不到数据
,这也就是「队头阻塞」。好比上班的路上塞车 。 针对上面的 HTTP/1.1 的性能瓶颈 ,HTTP/2 做了一些优化 。而且因为 HTTP/2 协议是基于 HTTPS 的
,所以 HTTP/2 的安全性也是有保障的。 1. 头部压缩 HTTP/2 会压缩头(Header)如果你同时发出多个请求,他们的头是一样的或是相似的,那么
,协议会帮你消除重复的部分 。 这就是所谓的 HPACK 算法:在客户端和服务器同时维护一张头信息表 ,所有字段都会存入这个表,生成一个索引号,以后就不发送同样字段了
,只发送索引号,这样就提高速度了 。 2. 二进制格式 HTTP/2 不再像 HTTP/1.1 里的纯文本形式的报文
,而是全面采用了二进制格式
一 、短视背景
二
、问体用户访问链路

三 、DNS域名解析




四
、HTTP性能


