我正在为重定向脚本编写基准测试。
我希望我的程序查询重定向到 AppStore 的某些 URL。但我不想下载 AppStore 页面。我只想记录重定向 URL 或错误。
如何在没有第二次重定向查询的情况下告诉 Go 查询 URL?
更新
两个答案都是正确的,但是:
我尝试了两种解决方案。我正在做基准测试。我使用 10 - 500 个 go 例程运行 1 个或多个 go 进程。他们循环查询 URL。我的服务器也是用 go 写的。它每秒报告请求数。
- 第一个解决方案:
http.DefaultTransport.RoundTrip
- 工作缓慢,给出错误。前 4 秒工作正常。进行 300-500 次查询然后性能下降到每秒 80 次查询。
然后下降到每秒 0-5 次查询,并且 queryies 脚本开始出现错误,例如
dial tcp IP:80: A connection attempt failed because the connected
party did not properly respond after a period of time, or established
connection failed because connected host has failed to respond.
我猜它重用已关闭的连接。
- 第二种解决方案:
CheckRedirect field
以恒定的性能工作。我不确定它是重复使用连接还是为每个请求打开一个新连接。我client
为循环中的每个请求创建。这就是它在现实生活中的行为方式(每个请求都是一个新连接)。有没有办法确保在每次查询后关闭连接并且不重复使用?
这就是为什么我要标记第二个解决方案来回答我的问题。但是对于我的研究来说,每个查询都是一个新的连接是非常重要的。我如何确保使用第二种解决方案?