curl 抓取网页(curl问题浏览器总有人反馈说打开某个页面比较慢,缓存)
优采云 发布时间: 2021-10-15 19:28curl 抓取网页(curl问题浏览器总有人反馈说打开某个页面比较慢,缓存)
curl 获取 网站 响应时间 html
0.问题浏览器
一直有反馈说打开某个页面很慢,有缓存
但他们不知道慢在哪里。服务器
一样的问题,网络
当我们访问外部业务的界面时,app
经常感觉很慢,运维
但目前还不清楚慢在哪里。卷曲
1.分析iphone
当我们打开一个网页时,ide
对于不需要考虑技术的人来说,
想象中的画面应该是,
让我们通过地址栏向浏览器询问一些事情,
然后浏览器通过我们提供的地址去对应的服务器去获取对应的文件,
然后根据服务器的响应向我们展示内容。
从一个运维人员的角度来说,
可能没有想象的那么简单粗暴,
否则,可能永远无法确认问题出在哪里。
简要总结一下,
1.当我们打开浏览器在地址栏中输入时,
浏览器首先会根据浏览器缓存、电脑缓存、电脑主机文件、DNS服务解析对应的网络地址。此过程将花费不同的时间和时间,具体取决于分辨率的位置。
使用浏览器缓存和计算机缓存,
返回的结果是最快的,但可能不是最新的,而且大多是错误的。
通过hosts文件解析域名的优先级高于DNS服务。
我们还可以修改hosts中某些域名的解析结果。
2. 浏览器获取到域名对应的IP后,开始与服务器进行三次握手进行链接。
3. 浏览器和服务器建立链接后,向其发起服务请求
4. 服务器内部处理完请求后,将处理结果发送给浏览器
5.浏览器解析服务器发送的结果然后展示给用户
以上简单描述了浏览器向服务器发出服务请求的过程,
其中任何一个链接时间过长,都会影响用户访问网站的速度。
2.curl 获取相关数据
使用 cur -w/--write-out l 获取相关数据
几个关键参数:
url_effective 最后获得的 URL。
http_code 上次 HTTP(S) 或 FTP(S) 操作返回的响应代码。7.18.2 版本中添加的 response_code 显示相同的信息。
http_connect 在对 curl 的 CONNECT 请求的最后响应(来自代理)中找到的数字代码。(加入7.12.4版本)
time_total 所有操作花费的时间,以秒为单位。精确到毫秒。
time_namelookup 从域名解析开始到完成所用的时间,单位为秒。
time_connect TCP 连接到远程主机(或代理服务器)所需的时间,以秒为单位。
time_appconnect SSL/SSH/等。完成与远程主机的连接/握手所需的时间,以秒为单位。(加入7.19.0版本)
time_pretransfer 从开始到文件即将传输的时间,以秒为单位。包括指定协议的所有预传输命令和协商。
time_redirect 所有重定向步骤的时间,包括域名解析、链接、预传、最后一次交易开始前的传输,单位为秒。time_redirect 显示多个重定向的完整执行时间。(加入7.12.3版本)
time_starttransfer 从开始到第一个字节传输所经过的时间,以秒为单位。
这包括 time_pretransfer 和服务器为操作结果所需的时间。
size_download 下载的总字节数。
size_upload 上传的总字节数。
size_header 下载头的总字节数。
size_request 发送的 HTTP 请求的总字节数。
speed_download curl 成功下载的平均下载速度。
speed_upload curl 成功上传的平均上传速度。
3.获取请求的耗时信息
对于具体的请求,可以通过curl获取各个链接的耗时状态。
就像域名解析耗时,链接创建耗时,服务器端处理耗时,总耗时。
国内合拍派对素材
curl -o /dev/null -s -w "http_code: %{http_code}\nhttp_connect:%{http_connect}\ncontent_type:%{content_type}\ntime_dns:%{time_namelookup}\ntime_redirect:%{time_redirect}\ntime_pretransfer:% {time_pretransfer}\ntime_connect:%{time_connect}\ntime_starttransfer:%{time_starttransfer}\ntime_total:%{time_total}:\nspeed_download:%{speed_download}\n """;