HTTPS 请求阶段分析

一个完整、无任何缓存、未复用连接的 HTTPS 请求需要经过以下几个阶段:DNS 域名解析、TCP 握手、SSL 握手、服务器处理、内容传输。
93159-fpr0v7y3im.png
curl测试命令:

curl -w '\n time_namelookup=%{time_namelookup}\n time_connect=%{time_connect}\n time_appconnect=%{time_appconnect}\n time_redirect=%{time_redirect}\n time_pretransfer=%{time_pretransfer}\n time_starttransfer=%{time_starttransfer}\n time_total=%{time_total}\n' -o /dev/null -s 'https://www.sjfn.com/'

输出的结果示例

time_namelookup=0.025021
time_connect=0.033326
time_appconnect=0.071539
time_redirect=0.000000
time_pretransfer=0.071622
time_starttransfer=0.088528
time_total=0.088744
请求阶段释义
time_namelookup从请求开始到域名解析完成的耗时
time_connect从请求开始到 TCP 三次握手完成耗时
time_appconnect从请求开始到 TLS 握手完成的耗时
time_pretransfer从请求开始到向服务器发送第一个 GET/POST 请求开始之前的耗时
time_redirect重定向时间,包括到内容传输前的重定向的 DNS 解析、TCP 连接、内容传输等时间
time_starttransfer从请求开始到内容传输前的时间
time_total从请求开始到完成的总耗时
耗时说明
域名解析耗时 = time_namelookup域名 NS 及本地 LocalDNS 解析耗时
TCP 握手耗时 = time_connect - time_namelookup建立 TCP 连接时间
SSL 耗时 = time_appconnect - time_connectTLS 握手以及加解密处理
服务器处理请求耗时 = time_starttransfer - time_pretransfer服务器响应第一个字节到全部传输完成耗时
TTFB = time_starttransfer - time_appconnect服务器从接收请求到开始到收到第一个字节的耗时
总耗时 = time_total

Sitemap · Rss

津ICP备2021004480号-3