Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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
Delphi Berlin:TIdHTTPServer(Indy 10)KeepAlive的好处_Delphi_Ssl_Indy_Idhttp - Fatal编程技术网

Delphi Berlin:TIdHTTPServer(Indy 10)KeepAlive的好处

Delphi Berlin:TIdHTTPServer(Indy 10)KeepAlive的好处,delphi,ssl,indy,idhttp,Delphi,Ssl,Indy,Idhttp,我有一个处理http和https请求的服务器 客户端和服务器之间的公共例程基于两个请求: 1) 用户请求带有url的文件,例如: 2) 服务器在响应头中进行一些检查并重定向到新url: location: https://example.com/files/10.zip 3) 浏览器在重定向到新url后,请求文件: 4) 服务器在响应流中发送文件“10.zip”: ResponseInfo.ContentStream := TFileStream.Create('C:\10.zip', f

我有一个处理
http
https
请求的服务器

客户端和服务器之间的公共例程基于两个请求:

1) 用户请求带有url的文件,例如:

2) 服务器在响应头中进行一些检查并重定向到新url:

location: https://example.com/files/10.zip
3) 浏览器在重定向到新url后,请求文件:

4) 服务器在响应流中发送文件“10.zip”:

ResponseInfo.ContentStream := TFileStream.Create('C:\10.zip', fmOpenRead or fmShareDenyNone);
所有例程都有两个请求(1,4),因此我禁用了会话并保持激活:

IdHTTPServer.KeepAlive        := False;
IdHTTPServer.AutoStartSession := False;
IdHTTPServer.SessionState     := False;
我认为keep alive只有在多次往返时才有巨大的好处,在我的场景中,当用户使用http时,这似乎是一个好主意,但是,当用户使用https时,这可能不是一个好主意,因为没有KeepAlive的每个请求都是一个新请求,https连接的初始设置成本要高得多

IdHTTPServer
上启用KeepAlive对我的场景有一些性能好处吗


Apache2.4具有5秒的默认KeepAliveTimeout。对于IndyServer来说,这是一个很好的值,以秒为单位?

删除该重定向,您就可以执行单个请求/响应。@Victoria我想了解KeepAlive是否对>1个请求具有性能优势。我明白了。也许你可以看看。对这个问题给出一个最终的答案是相当宽泛的。如果浏览器在几秒钟内发送多个后续请求,保持连接处于活动状态是有意义的。如果以分钟或小时为单位,则保持其活动状态是没有意义的。@ar099968如果您想了解KeepAlive是否具有性能优势,请分析代码并亲自查看(提示:确实如此,尤其是对于HTTPS。您的往返行程比您想象的要多)@Victoria目前没有。它在我的待办事项清单上。但是,您可以为连接设置
ReadTimeout
,如果客户端在超时时间过去之前没有发送新请求,则会引发异常以关闭连接删除该重定向,并且您只有一个请求/响应。@Victoria我想了解KeepAlive是否对>1个请求有性能优势。我明白了。也许你可以看看。对这个问题给出一个最终的答案是相当宽泛的。如果浏览器在几秒钟内发送多个后续请求,保持连接处于活动状态是有意义的。如果以分钟或小时为单位,则保持其活动状态是没有意义的。@ar099968如果您想了解KeepAlive是否具有性能优势,请分析代码并亲自查看(提示:确实如此,尤其是对于HTTPS。您的往返行程比您想象的要多)@Victoria目前没有。它在我的待办事项清单上。但是,您可以为连接设置
ReadTimeout
,如果客户端在超时时间过去之前未发送新请求,则会引发异常以关闭连接