如何加快HTTP请求速度
我需要获取一些json数据,正在使用urllib2这个库:
request = urllib2.Request(url)
request.add_header('Accept-Encoding', 'gzip')
opener = urllib2.build_opener()
connection = opener.open(request)
data = connection.read()
但是虽然数据量不大,速度还是很慢。
有没有办法让它快一点?我也可以使用其他的库。
4 个回答
1
看起来urllib本身没什么问题。如果你遇到网络问题或者性能不佳,可以试试用Wireshark这样的工具来检查网络情况。我对这跟Python有什么关系持很大的怀疑。
3
你这里依赖了很多可能不在你控制范围内的因素:
- 你的网络连接的延迟和带宽
- 服务器连接的延迟和带宽
- 服务器应用程序及其各个进程的负载
问题可能主要出在第2和第3点,而你对此可能无能为力。内容是否可以缓存?这取决于你自己应用的需求以及从服务器返回的HTTP头信息(比如ETags、Cache-Control、Last-Modified)。如果服务器每天只更新一次数据,那么你可能每小时请求一次数据会更好。
6
Accept-Encoding:gzip
的意思是,客户端准备好接收经过 gzip 压缩的内容,只要服务器也准备好先发送这些内容。接下来的请求会通过网络传输,经过你的操作系统的 TCP/IP 协议栈,然后到达物理层。
如果服务器支持 ETags,那么你可以发送一个 If-None-Match
头部,这样可以确保内容没有改变,从而利用缓存。这里有一个例子:点击查看。
你对客户端能做的事情很有限,单靠这些来提高你的 HTTP 请求速度效果不大。