我在做一个太慢的网络请求。GetResponseStream()大约需要3.2秒,ReadToEnd()需要.8秒。
如果我在网络浏览器中运行相同的请求,我将在不到一秒钟内得到响应.我想知道我能做些什么来加速这个请求,是什么导致了它的缓慢?
根据我在这里看到的其他问题,我在app.config +启用的最大连接中禁用了代理,以防万一(它仍然很慢)。我添加的部分是:
<system.net>
<defaultProxy enabled="false">
<proxy/>
<bypasslist/>
<module/>
</defaultProxy>
<connectionManagement>
<add address="*" maxconnection="65000" />
</connectionManagement>
下面是代码外观和速度的屏幕截图:
我很感谢你的帮助..。对于用户来说,4-8秒太长了,无法等待ajax请求的完成。
谢谢!
发布于 2010-03-05 00:28:02
线
responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
一次做三件事:
要改进时间分析,从而了解瓶颈所在,首先应该重新编码该部分以分离任务。
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();
}
我知道,这不是一个解决办法,但也许它提供了一个更多的洞察力,在哪里的时间是浪费。
最后一个建议是,考虑使用异步执行来减少用户感知的执行时间。
https://stackoverflow.com/questions/2383470
复制相似问题