现在是用curl采集一个站点。
例如有10个页面,域名是一样的只不过文件名不一样如下:
http://www.abc.com/1.php
http://www.abc.com/2.php
........................
http://www.abc.com/10.php例如要在一次请求当中用for循环一次抓取这10个页面的内容,并处一些处理,但我考虑到速度问题可不可以在第一次循环之后告诉abc.com的服务器我还要再请求2.php或者这个服务器的其它内容,不要断开链接。这样能行吗?有办法没有啊?
例如有10个页面,域名是一样的只不过文件名不一样如下:
http://www.abc.com/1.php
http://www.abc.com/2.php
........................
http://www.abc.com/10.php例如要在一次请求当中用for循环一次抓取这10个页面的内容,并处一些处理,但我考虑到速度问题可不可以在第一次循环之后告诉abc.com的服务器我还要再请求2.php或者这个服务器的其它内容,不要断开链接。这样能行吗?有办法没有啊?
HTTP 是无状态协议
跟HTTP的状态无关,长连接只是告诉服务器,本HTTP会话完成后,不要立即关闭socket,
而是等待一个给定的时间,如果超过这个时间仍然没有新的请求发送过去,那么就关闭socket,
在失效之前,可以再次进行新的HTTP会话,这个会话跟前一次的会话没有任何关联,
仅仅是复用了前一次的socket连接。
Host www.baidu.com
User-Agent Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset x-gbk,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
Cookie BAIDUID=D2724D19FEAE5E9AFB50D2FF62625E56:FG=1
Cache-Control max-age=0这两行便是长连接的秘密所在,当然,服务器可以忽略掉它,不过一般是支持的。
Keep-Alive 300
Connection keep-alive长连接,使得向相同web服务请求时,不用重复的建立和销毁连接,大大提高性能。
一般浏览一个页面时,也会请求css,jpeg,js等其它文件,而且总量还不小,
如果没有长连接,光建立销毁那么多次socket连接就要耗费不少时间,
特别是有连接数限制的浏览器。