TsgcWebSocketHTTPServerイベント › OnHTTP2BeforeAsyncRequest

OnHTTP2BeforeAsyncRequest イベント

HTTP/2 リクエストがキューに入れられる前に発生し、アプリケーションがスレッドプールで実行するか接続スレッドで実行するかを選択できます。

構文

property OnHTTP2BeforeAsyncRequest: TsgcWSOnBeforeHttp2AsyncRequest;
// TsgcWSOnBeforeHttp2AsyncRequest = procedure(Sender: TObject; Connection: TsgcWSConnection; const ARequestInfo: TIdHTTPRequestInfo; var Async: Boolean) of object

デフォルト値

解説

HTTP2Options.PoolOfThreads.EnabledがTrueの場合、サーバーはHTTP/2の多重化を活用するために、受信HTTP/2リクエストをワーカープール(HTTP2Options.Threads)でディスパッチします。OnHTTP2BeforeAsyncRequestは、キューイングされる前にすべてのリクエストに対して発生します。ARequestInfo.Documentを検査して決定し、Asyncをスレッドプールで実行するにはTrue(デフォルト)に、接続スレッドで実行するにはFalseに設定します。短いリクエストを接続スレッドにルーティングすると、低速なリクエストをスレッド化したままプールのオーバーヘッドを回避できます。これが推奨される微調整戦略です。

使用例


procedure OnHTTP2BeforeAsyncRequest(Sender: TObject; Connection: TsgcWSConnection;
  const ARequestInfo: TIdHTTPRequestInfo; var Async: Boolean);
begin
  if ARequestInfo.Document = '/fast-request' then
    Async := False;
end;

イベントに戻る