1

我保证这并不像听起来那么简单。我想知道为什么第一次调用 HttpSendRequest 比后续调用花费更长的时间,即使后来的请求是针对不同的 URL 的。例如:

InternetConnect(... "foo.com" ...) // 立即返回
HttpOpenRequest(...) // 立即返回
HttpSendRequest(...) // 需要 ~3 秒
HttpSendRequest(...) // 需要 ~ 200 毫秒

InternetConnect(... "bar.com" ...) // 立即返回
HttpOpenRequest(...) // 立即返回
HttpSendRequest(...) // 需要 ~200 ms

为什么第一个 HttpSendRequest(...) 需要这么长时间?无论 URL 是什么,这都是非常一致的。

谢谢,格雷格

4

2 回答 2

1

第一个请求可能需要发生一些事情,而第二个请求不需要发生。DNS 查找和代理检测立即浮现在脑海中。

于 2009-10-09T20:27:24.270 回答
-2

它也可能是配置文件加载。一些 .Net 框架类将尝试从应用程序配置文件中读取设置,如果未找到文件或设置,则恢复为默认值。例如,我认为是 Http 类在后台使用的 WebRequest/WebClient 将检查显式的 Web 代理设置,如果这些设置不存在,则从操作系统(在 IE 中设置)中获取代理设置。所有这些都会导致初始启动滞后,通常是在第一次使用该类时,也就是说,工作通常在静态构造器中完成。

配置设置在这里定义:

.NET Framework 的配置文件架构

于 2009-10-10T01:30:32.370 回答