Webclient在第一次请求时变慢

时间:2017-10-23 12:24:15

标签: c# webclient

我正在创建一个从网站获取信息的应用程序,该网站返回包含数据的单行文本。 为此,我只使用WebClient.DownloadString()。这是代码:

    {
        WebClient Client = new WebClient();
        Client.Proxy = null;
        return Client.DownloadString(url);
    }

问题是,在第一个请求中,此过程始终需要~21.000ms,下一个请求需要正常的时间。有类似的问题,pepole似乎解决了这个问题添加行Client.Proxy = null;,但它没有解决我的问题。我的代理互联网设置被禁用,防火墙没有阻止任何东西(尝试禁用它)。

我还测试了使用不同的网站,如谷歌(测试它不是服务器问题),但结果是相同的。我还尝试使用WebBrowser控件和HttpWebRequest,但结果也一样。

在常规浏览器(测试边缘,firefox和chrome)上加载同一页面大约需要200ms并清除缓存。

使用wireshark我得到了这个,但我不知道如何解释它:

使用firefox:

TCP:
1. SYN (client-server)
2. SYN (client-server)
3. SYN ACK (server-client)
4. ACK (client-server)
5. SYN ACK (server-client)    
6. ACK (client-server)       
HTTP:
5. GET (client-server)   
TCP:
7. ACK (server-client)   
HTTP:
5. RESPONSE 200 OK (server-client) (The correct response is received)
TCP:
7. ACK (client server)   

然后用我的程序:

我得到完全相同的程序,但是第一个通过TCP发送的数据包使用Ipv6地址而不是Ipv4,然后它等待21秒然后其余的数据包,实际的HTTP GET-RESPONSE时间很短。

1 个答案:

答案 0 :(得分:0)

问题解决了它一直是Ipv6。而不是向http://www.hostame.domian/file请求我现在正在做http://xxx.xxx.xxx.xxx/file,所以它直接转到Ipv4地址。

一种简短的生活问题,但我希望如果有人遇到同样的问题会有所帮助。