Delphi-Cross-Socket
Delphi-Cross-Socket copied to clipboard
能否开放ICrossHttpRequest,ICrossHttpResponse的Reset的方法
在长连接的时候,一次请求完成后,服务端的ARequest: ICrossHttpRequest; AResponse: ICrossHttpResponse 这两个对象并没有被释放。要等到下一次 请求上来才能Reset,如果Request里面Post上来的比较大的Stream,那服务端的内存占用也是比较大的。所以在发送给客户端完成后,可以手工Reset掉这部分内存占用。另外ICrossHttpConnection 对象是否有最后一次访问时间?服务端针对长时间没有数据传输,并且还是长连接的,可以手工断开这些连接。
实际上现在是在处理完请求之后就自动调用了Reset了,所以应该不会出现你说的请求响应之后还占用Post的内存, 你可以看看 ParseRecvData 这个方法里有着一段
` // 处理请求 if (LRequest.FParseState = psDone) then begin DoOnRequest(LHttpConnection);
LRequest.Reset;
LResponse.Reset;
end;
`
实际上现在是在处理完请求之后就自动调用了Reset了,所以应该不会出现你说的请求响应之后还占用Post的内存, 你可以看看 ParseRecvData 这个方法里有着一段
` // 处理请求 if (LRequest.FParseState = psDone) then begin DoOnRequest(LHttpConnection);
LRequest.Reset; LResponse.Reset; end;`
处理后马上调用Reset,就导致在DoOnRequest(LHttpConnection)里面不适合新开线程,因为新线程访问的Request被Reset了。