首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WebRequests很慢(花了4秒),我该如何加快速度呢?

WebRequests很慢(花了4秒),我该如何加快速度呢?
EN

Stack Overflow用户
提问于 2010-03-04 23:20:18
回答 1查看 1.5K关注 0票数 5

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

如果我在网络浏览器中运行相同的请求,我将在不到一秒钟内得到响应.我想知道我能做些什么来加速这个请求,是什么导致了它的缓慢?

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

代码语言:javascript
运行
复制
 <system.net>
<defaultProxy enabled="false">
  <proxy/>
  <bypasslist/>
  <module/>
</defaultProxy>
<connectionManagement>
  <add address="*" maxconnection="65000" />
</connectionManagement>

下面是代码外观和速度的屏幕截图:

我很感谢你的帮助..。对于用户来说,4-8秒太长了,无法等待ajax请求的完成。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2010-03-05 00:28:02

线

代码语言:javascript
运行
复制
responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());

一次做三件事:

  1. 从数据获取响应,
  2. 从WebResponse对象获取响应流,
  3. 打开流.

要改进时间分析,从而了解瓶颈所在,首先应该重新编码该部分以分离任务。

代码语言:javascript
运行
复制
HttpWebResponse response = WebRequest.GetResponse();
Stream s = response.GetResponseStream();
reader = new StreamReader(s);

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

代码语言:javascript
运行
复制
using (Stream s = response.GetResponseStream()) {
    StreamReader reader = new StreamReader(s);
    responseData = reader.ReadToEnd();
}

我知道,这不是一个解决办法,但也许它提供了一个更多的洞察力,在哪里的时间是浪费。

最后一个建议是,考虑使用异步执行来减少用户感知的执行时间。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2383470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档