繁体   English   中英

WebRequests很慢(需要4秒)我如何加快速度?

[英]WebRequests are slow (taking 4 seconds) how do I speed them up?

我正在做一个太慢的网络请求。 GetResponseStream()需要大约3.2秒,ReadToEnd()需要0.8秒

如果我在网络浏览器中运行相同的请求,我会在不到一秒的时间内收到响应......我想知道我能做些什么来加快请求速度以及可能导致速度变慢的原因?

基于我在这里看到的其他问题,我在app.config +启用的最大连接中禁用了代理,以防万一(它仍然很慢)。 我添加的部分是:

 <system.net>
<defaultProxy enabled="false">
  <proxy/>
  <bypasslist/>
  <module/>
</defaultProxy>
<connectionManagement>
  <add address="*" maxconnection="65000" />
</connectionManagement>

这是代码的样子和缓慢的截图:

替代文字

我很感激任何帮助... 4-8秒对于用户等待ajax请求完成来说太长了。

谢谢!

这条线

responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());

一次做三件事:

  1. 它从数据中获得响应。
  2. 它从WebResponse对象获取响应流。
  3. 它打开了流。

为了改进时序分析,并因此了解瓶颈的位置,首先应该重新编写该部分以分离任务。

HttpWebResponse response = WebRequest.GetResponse();
Stream s = response.GetResponseStream();
reader = new StreamReader(s);

finally块中,您只需关闭阅读器,因为这也会关闭底层流。 您可以考虑为阅读器using块,而不是显式关闭流。

using (Stream s = response.GetResponseStream()) {
    StreamReader reader = new StreamReader(s);
    responseData = reader.ReadToEnd();
}

我知道这不是一个解决方案,但它可能会提供更多的洞察时间丢失的时间。

最后的建议,考虑使用异步执行来减少用户所感知的执行持续时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM