TsgcWebSocketHTTPServer › プロパティ › HTTPCompression
クライアントが対応をアドバタイズしている場合、DocumentRoot の静的ファイルと OnCommandGet による動的レスポンスの両方について、HTTP/1.1 レスポンスを gzip または deflate で圧縮します。
property HTTPCompression: TsgcHTTPCompression_Options read FHTTPCompression write SetHTTPCompression;
Enabled=False
デフォルトでは、サーバーはすべての HTTP/1.1 レスポンスを圧縮せずに送信します。クライアントの Accept-Encoding リクエストヘッダーが許可している場合に、対象のレスポンスを gzip または deflate で圧縮するには、HTTPCompression.Enabled を True に設定します。Level は 0 から 9 までの圧縮レベルです(デフォルト 6)。MinSize は、これより小さいレスポンス(バイト単位、デフォルト 1,024)の圧縮をスキップします。小さいボディを圧縮しても CPU コストに見合わないことが多いためです。Algorithms はサーバーが使用できるエンコーディングの集合です(デフォルトは caGZip と caDeflate の両方。クライアントが両方を受け入れる場合は gzip が優先されます)。ContentTypes は圧縮対象となるレスポンスのコンテンツタイプを一覧化するもので、text/* のようなワイルドカードもサポートされ、デフォルトでは一般的な text、JSON、JavaScript、XML、SVG の各タイプが指定されています。
サーバーは、すでに Content-Encoding ヘッダーを持つレスポンス、204/304/1xx ステータスコードのレスポンス、text/event-stream(Server-Sent Events)のコンテンツタイプのレスポンスを圧縮しません。また、圧縮しても実際にはサイズが小さくならない場合は圧縮をスキップします。レスポンスを圧縮する場合は、Content-Encoding を設定し、Vary: Accept-Encoding ヘッダーを追加します。このプロパティが対象とするのは HTTP/1.1 レスポンスのみで、HTTP/2 レスポンスには影響しません。詳しい説明と、WebSocket メッセージの圧縮との違いについては、HTTP圧縮を参照してください。
oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.DocumentRoot := 'C:\inetpub\wwwroot';
oServer.HTTPCompression.Enabled := true;
oServer.HTTPCompression.MinSize := 1024;
oServer.Active := true;