TsgcWebSocketHTTPServer › 속성 › HTTPCompression
클라이언트가 지원을 알리면 DocumentRoot 정적 파일과 동적 OnCommandGet 응답 모두에 대해 gzip 또는 deflate로 HTTP/1.1 응답을 압축합니다.
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/*와 같은 와일드카드도 지원되고, 기본값은 일반적인 텍스트, 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;