- 0133技术站
- 联系QQ:18840023
- QQ交流群

- 微信公众号

了解网络下载资源的阶段至关重要。这是修复加载问题的基础。
Resource Timing
(资源时序)API。所有网络请求都被视为资源。当它们通过网络检索时,分为不同的生命周期。Network
(网络)面板使用的Resource Timing API和提供给开发者的API是一样的。
Resource Timing API提供了关于每个单独资源接收时间的详细信息。 请求生命周期的主要阶段是:
Redirect
(重定向)startTime
。redirectStart
也会开始计时。redirectEnd
将被采用。App Cache
(应用程序缓存)fetchStart
时间。DNS
domainLookupStart
记录DNS请求开始的时间。domainLookupEnd
记录DNS请求结束的时间。TCP
connectStart
记录开始连接到服务器的时间。secureConnectionStart
记录开始连接时间。connectEnd
记录连接完毕时间。Request
(请求)requestStart
记录请求发送到服务器的时间。Response
(响应)responseStart
记录最开始的响应时间。responseEnd
记录响应结束时间。Network
(网络)面板中查看完整时序信息,您有三个选择。
Requests Table
(请求列表)中的条目,并打开该条目的Timing
(时序)标签页。Resource Timing API
(资源时序API)从JavaScript中检索原始数据。这段代码可以在DevTools控制台中运行。它将使用Resource Timing API
(资源时序API)来检索所有资源。然后它过滤条目,查找包含style.css
名称的条目。如果找到,将被返回。
performance.getEntriesByType('resource').filter(item => item.name.includes("style.css"))
通过Network
(网络)面板可以发现许多可能的问题。要找到这些问题需要很好地了解客户端和服务端之间的通信以及协议的限制。
最常见的问题是很多个请求排队或被阻塞。这表示从单个客户端检索的资源太多。在HTTP 1.0/1.1连接协议中,Chrome限制每个域名最多执行6个TCP连接。如果您一次请求十二个资源,前6个将开始,后6个将排队。一旦其中一个请求完成,队列中的第一个请求项目将开始其请求过程。
要解决传统HTTP 1的此问题,您需要实现分域。即用多个子域名提供服务资源,将资源拆分到多个子域中,均匀分配。
上面说的修复HTTP 1连接数问题,不适用于HTTP 2连接,反而有害。如果您已部署HTTP 2,不要对您的资源进行域划分,因为它会影响HTTP 2的工作原理。在HTTP 2中,TCP连接多路复用连接的。这消除了HTTP 1的6个连接限制,并且可以通过单个连接同时传输多个资源。
正如我们所看到的,很多绿色。
TTFB就是等待第一个响应字节的时间,建议在200ms以下,以下情况可能会导致高TTFB:
为了解决高TTFB,首先去除尽可能多的网络连接。理想情况下,在本地托管应用程序(部署在本地),并查看是否仍有一个大的TTFB。如果有,那么需要优化应用程序针的响应速度。这可能意味着优化数据库查询,为内容的某些部分实现高速缓存,或修改Web服务器配置。后端可能很慢的原因有很多。您需要对您的程序进行研究,并找出不符合您预期的内容。
如果本地TTFB低,那么是您的客户端和服务器之间的网络问题。网络传输可能被很多种事情干扰阻碍。在客户端和服务器之间有很多点,每个都有自己的连接限制,可能会导致问题。测试减少这种情况的最简单的方法是将您的应用程序放在另一台主机上,看看TTFB是否改进。
正如我们所看到的,很多蓝色。
如果您看到Content Download
(内容下载)阶段花费了很多时间,提高服务响应速度、并行下载等优化措施帮助都不大。
主要的解决方案是发送更少的字节。(比如,下载一张高质量的大图,可能是几兆,这个时候你需要优化图片。)
推荐手册