用Python测量页面速度和网络时间,类似HTML5导航时间?

1 投票
1 回答
1773 浏览
提问于 2025-04-19 13:16

我现在正在做一个客户端,它需要通过服务器的实际响应时间来判断服务器的健康状况(还有网络上的时间)。我发现了一个实现,这是一个新的HTML5特性,它基本上提供了我感兴趣的所有指标:

导航时间API性能对象的可视化展示

我知道我可以使用Selenium和PhantomJS来解析输出,但出于性能和可扩展性的考虑,我更倾向于使用urllib或requests,这样可以将过程分解为DNS请求、网络时间和服务器实际响应所需的时间。

1 个回答

4

根据@Andre Daniel提供的信息,这段代码通过DNS获取一个域名的IP地址,并打印出所花费的时间。接着,它会获取一个网址,打印出时间,并在去掉查找这个网址的DNS时间后,打印出实际的耗时。

源代码

import socket, time, urllib, urlparse

URL = 'http://example.com/123'

print URL, 'timing:'

urlinfo = urlparse.urlparse(URL)

start = time.time()
ip = socket.gethostbyname( urlinfo.netloc )
dns_tm = time.time()-start
print 'DNS:\t\t{:.3f} seconds'.format( dns_tm )

start = time.time()
_data = urllib.urlopen(URL).read()
load_tm = time.time()-start
print 'load:\t\t{:.3f} seconds'.format( load_tm )
print 'w/o DNS:\t{:.3f} seconds'.format( load_tm-dns_tm )

输出结果

http://example.com/123 timing:
DNS:        0.054 seconds
load:       0.104 seconds
w/o DNS:    0.050 seconds

撰写回答