TsgcWebSocketHTTPServer › 属性 › HTTPCompression
当客户端声明支持时,用 gzip 或 deflate 压缩 HTTP/1.1 响应,对 DocumentRoot 静态文件和动态 OnCommandGet 响应均生效。
property HTTPCompression: TsgcHTTPCompression_Options read FHTTPCompression write SetHTTPCompression;
Enabled=False
默认情况下,服务器将每个 HTTP/1.1 响应以未压缩方式发送。将 HTTPCompression.Enabled 设为 True,即可在客户端的 Accept-Encoding 请求头允许时,使用 gzip 或 deflate 压缩符合条件的响应。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 Compression。
oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.DocumentRoot := 'C:\inetpub\wwwroot';
oServer.HTTPCompression.Enabled := true;
oServer.HTTPCompression.MinSize := 1024;
oServer.Active := true;