gpt4 book ai didi

delphi - THttpClient中的KeepAlive如何工作?

转载 作者:行者123 更新时间:2023-12-03 07:54:30 25 4
gpt4 key购买 nike

如果我做下面的情况:

MyHttpClient := ThttpClient.create;
MyHttpClient.Get('https://www.siteA.com');
MyHttpClient.Get('https://www.siteB.com');
MyHttpClient.Get('https://www.siteA.com');


是针对每个发送到 https://www.siteA.com的请求还是仅针对第一个请求进行HTTP连接(和https握手),然后在第二个请求中重用?这适用于android / ios和Windows

在这种情况下:

MyHttpClient1 := ThttpClient.create;
MyHttpClient1.Get('https://www.siteA.com');
MyHttpClient1.disposeOf;


MyHttpClient2 := ThttpClient.create;
MyHttpClient2.Get('https://www.siteA.com');
MyHttpClient2.disposeOf;


与以前的一样,是否会为每个请求或仅针对第一个请求建立HTTP连接(和https握手),然后再为第二个请求重用?

如何在android / ios下测试此行为?

最佳答案

在第一个示例中,您正在将请求发送到不同的主机名,因此,即使主机名解析为相同的IP地址,无论是否重复使用THTTPClient对象,每个请求都必须使用单独的TCP连接和HTTPS握手。一旦TCP连接完成握手,就无法通过现有TCP连接发送其他主机名的新握手。因此,THTTPClient必须删除连接并在第二个和第三个请求上创建一个新的连接。 KeepAlive仅适用于对相同主机名的顺序请求。

在第二个示例中,您使用的是单独的THTTPClient对象,因此即使请求指向相同的主机名,TCP连接也将被删除并重新连接。 THTTPClient不缓存对象之间的TCP连接。

关于delphi - THttpClient中的KeepAlive如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48304435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com