TsgcWebSocketHTTPServer › Événements › OnHTTP2BeforeAsyncRequest
Déclenché avant qu'une requête HTTP/2 ne soit mise en file d'attente, afin que l'application puisse choisir si elle s'exécute dans le pool de threads ou dans le thread de connexion.
property OnHTTP2BeforeAsyncRequest: TsgcWSOnBeforeHttp2AsyncRequest;
// TsgcWSOnBeforeHttp2AsyncRequest = procedure(Sender: TObject; Connection: TsgcWSConnection; const ARequestInfo: TIdHTTPRequestInfo; var Async: Boolean) of object
—
Lorsque HTTP2Options.PoolOfThreads.Enabled est True, le serveur distribue les requêtes HTTP/2 entrantes sur un pool de workers (HTTP2Options.Threads) pour tirer parti du multiplexage HTTP/2. OnHTTP2BeforeAsyncRequest est levé pour chaque requête avant sa mise en file d'attente : inspectez ARequestInfo.Document pour décider, et définissez Async sur True (par défaut) pour s'exécuter dans le pool de threads ou sur False pour s'exécuter dans le thread de connexion. Acheminer les requêtes courtes vers le thread de connexion évite la surcharge du pool tout en maintenant les requêtes lentes sur des threads, ce qui est la stratégie d'ajustement recommandée.
procedure OnHTTP2BeforeAsyncRequest(Sender: TObject; Connection: TsgcWSConnection;
const ARequestInfo: TIdHTTPRequestInfo; var Async: Boolean);
begin
if ARequestInfo.Document = '/fast-request' then
Async := False;
end;