Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.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# 非持久HTTP 1.1连接比持久HTTP 1.1连接快?_C#_Entity Framework_Http_Rest_Odata - Fatal编程技术网

C# 非持久HTTP 1.1连接比持久HTTP 1.1连接快?

C# 非持久HTTP 1.1连接比持久HTTP 1.1连接快?,c#,entity-framework,http,rest,odata,C#,Entity Framework,Http,Rest,Odata,我将EntityFramework4.0与RESTWeb服务结合使用。 在客户端,在数据/实体加载期间,客户端发出40个连续的web请求 当我将HttpWebRequest.KeepAlive设置为false(Fiddler显示连接:在客户端-服务器通信中关闭标头)时,数据加载速度快了约50%(请求仍然是顺序的)-我想知道为什么 来自维基百科: HTTP持久连接,也称为HTTP保持活动,或HTTP连接重用,是使用相同的TCP连接发送和接收多个HTTP请求/响应,而不是为每个请求/响应对打开一个新

我将EntityFramework4.0与RESTWeb服务结合使用。 在客户端,在数据/实体加载期间,客户端发出40个连续的web请求

当我将
HttpWebRequest.KeepAlive
设置为false(Fiddler显示连接:在客户端-服务器通信中关闭标头)时,数据加载速度快了约50%(请求仍然是顺序的)-我想知道为什么

来自维基百科: HTTP持久连接,也称为HTTP保持活动,或HTTP连接重用,是使用相同的TCP连接发送和接收多个HTTP请求/响应,而不是为每个请求/响应对打开一个新连接

来自MSDN: 当KeepAlive属性为true时,应用程序将与支持它们的服务器建立持久连接。 在使用HTTP/1.1时,默认情况下,“保持活动”为开/真


怎么了?如何提高持久性请求的速度?

在客户端上,非持久性连接的每个IP并发连接数限制可能高于持久性连接。所以,当使用keep-alive时,客户端可能允许您有10个并行连接,但当不使用keep-alive时,您可以有15个并行连接

但只有在建立连接非常快的本地网络上,这才会更快。在internet上(RTT为5-200毫秒),您只需要3倍的RTT时间(SYN,SYN+ACK,ACK)即可开始新的连接。因此,特别是如果您有许多小请求(例如1kB以下的图像),保持活动的速度可以快4倍-因为您只设置了一次连接,然后发送1个数据包作为请求,接收1个数据包作为响应。但是如果没有keepalive,您需要3个数据包来开始,然后发送请求,然后接收响应,然后2个数据包来关闭连接