Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Webclient在第一次请求时变慢_C#_Webclient - Fatal编程技术网

C# Webclient在第一次请求时变慢

C# Webclient在第一次请求时变慢,c#,webclient,C#,Webclient,我正在创建一个从网站获取信息的应用程序,该网站返回一行包含数据的文本。 为了得到这个,我只使用了WebClient.DownloadString()。代码如下: { WebClient Client = new WebClient(); Client.Proxy = null; return Client.DownloadString(url); } 问题在于,在第一次请求时,此过程总是需要~21.000ms,而下一次则需要正常的

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

    {
        WebClient Client = new WebClient();
        Client.Proxy = null;
        return Client.DownloadString(url);
    }
问题在于,在第一次请求时,此过程总是需要
~21.000ms
,而下一次则需要正常的时间。也有类似的问题,pepole似乎解决了这个问题,添加了一行
Client.Proxy=null,但它不能解决我的问题。我的代理internet设置已禁用,防火墙未阻止任何内容(已尝试禁用它)

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

在常规浏览器(tested edge、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时间应该很短。

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


这是一个很短的问题,但如果有人有同样的问题,我希望它能有所帮助。

当连接到http服务器时,客户端和服务器之间会使用http头进行协商,以获得公共通信模式。例如,服务器默认为法语,客户端可能需要英语。然后,服务器将URL转发到另一个网页,这可能需要时间。此外,可以在第一个连接上建立cookie,然后后续连接将使用cookie,因此使用cookie的响应将比没有cookie的初始连接更快。