我试图确定是否有办法检查可能的大型网址列表(> 1000000)的可用性,而无需向每个网址发送GET请求.
是否可以安全地假设如果http://www.example.com无法访问(如无法连接到服务器或域的DNS请求失败),或者我得到4XX或5XX响应,那么来自该域的任何内容也将无法访问(例如http://www.example.com/some/path/to/a/resource/named/whatever.jpg)?302响应(比如说what.jpg)是否足以使第一个假设无效?我认为子域名应该被视为不同的http://subdomain.example.com和http://www.example.com可能不会指向同一个IP?
我似乎能够想到我提出的每个捷径的反例.我应该咬紧牙关并向每个URL发送GET请求吗?
不幸的是,没有你不能从4xx
或5xx
或任何其他代码推断任何东西.
这些代码适用于单个页面,而不适用于服务器.很可能一个页面关闭而另一个页面打开,或者一个页面有500个服务器端错误而另一个页面错误.
你可以做的是用HEAD
而不是GET
.它检索页面的MIME标头,但不检索页面内容.这节省了服务器端的时间(因为它不必渲染页面)和自己(因为您不必缓冲然后丢弃内容).
另外,我建议您使用keep-alive
来加速来自同一服务器的响应.许多HTTP客户端库将为您执行此操作.