使用Python测量页面速度和网络时间,如HTML5 Navigation Timing吗?

时间:2014-09-03 09:04:56

标签: python html5 performance python-requests

我目前正在研究一个客户端,它应该通过实际的响应时间(以及网络单独的时间)来确定服务器的运行状况。我遇到a implementationnew HTML5 feature,它基本上给了我所有指标,我感兴趣的是:

Visual presentation of Navigation Timing API performance object

我知道我可以使用Selenium和PhantomJS并只解析输出,但出于性能和可扩展性的原因,我更喜欢解决方案urllib或者请求,这会将其分解为DNS请求,网络上的时间和服务器响应的实际时间。

1 个答案:

答案 0 :(得分:4)

为了构建@Andre Daniel提供的引用,此代码通过DNS获取域IP,并打印出已用时间。然后,它会删除URL,打印时间,并在删除同一URL的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