偶然发现 C# 的 HttpRequest 要比 Chrome 请求同一Url 慢好多。C# HttpRequest 要500毫秒 而Chrome 只须要 39ms。服务器
做为有责任感的 码农。这个 必须优化。。并发
后来 整理 各类方法作了优化 tcp
HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest; request.KeepAlive = false; request.ServicePoint.Expect100Continue = false; request.ServicePoint.UseNagleAlgorithm = false; request.ServicePoint.ConnectionLimit = 65500; request.AllowWriteStreamBuffering = false; request.Proxy = null; response.Close(); request.Abort();
打开 KeepAlive 属性,这个能够打开一个tcp链接并在 一段时内重用tcp链接,从而加快http 请求。(默认是打开的)(我在开启keepalive 时出现 服务器关闭链接的错误,在请求完成后 加response.Close();request.Abort(); 后 错误消失)
Expect100Continue 的做用优化
发送一个请求, 包含一个Expect:100-continue, 询问Server使用愿意接受数据
接收到Server返回的100-continue应答之后, 才把数据POST给Server
因此关闭它能够加快http 请求。
还有 ConnectionLimit 默认是2 ,就是说 系统 只能 并发 2个http 请求,因此 这个属性能够以适当增大。spa
Proxy 属性在 .Net 4.0 时应该在 config 文件中增长:.net
<system.net> <defaultProxy enabled="false" useDefaultCredentials="false" > <proxy/> <bypasslist/> <module/> </defaultProxy> </system.net> </configuration>
其余版本.NET 能够设置为null。
缘由:NET4.0或3.5中的默认代理是开启的,而我并无设置!故只有等待超时后才会绕过代理,这就阻塞了.其余的能够本身百度。到这了 http 的响应速度由原来 的500ms 减少的60ms,但仍是 比不上Chrome。但愿在之后有更好的办法加快。晚了洗洗睡了。代理