Tarafından desteklenir
HTTPCompression, istemci bunu Accept-Encoding istek başlığını kullanarak desteklediğini bildirdiğinde, HTTP/1.1 yanıtlarını istemciye gönderilmeden önce gzip veya deflate ile sıkıştırır. Hem DocumentRoot üzerinden sunulan statik dosyalara hem de OnCommandGet içinde kendinizin oluşturduğu yanıtlara uygulanır. Varsayılan olarak devre dışıdır, bu nedenle siz onu etkinleştirene kadar mevcut uygulamalar etkilenmez.
Bu, WebSocket mesajlarını PerMessage_Deflate protokolünü kullanarak sıkıştıran Sıkıştırma özelliğinden farklı bir özelliktir. HTTPCompression yalnızca düz HTTP/1.1 isteklerini ve yanıtlarını etkiler; WebSocket trafiği üzerinde hiçbir etkisi yoktur ve Sıkıştırma da HTTP yanıtları üzerinde hiçbir etkiye sahip değildir.
Etkinleştirmek için şunu ayarlayın:
HTTPCompression / Enabled
Ayrıca şu şekilde ayarlayabilirsiniz:
Level — sıkıştırma düzeyi, 0 (yok) ile 9 (maksimum) arası; varsayılan 6.
MinSize — bayt cinsinden bundan küçük yanıtlar sıkıştırılmaz; varsayılan 1024.
Algorithms — sunucunun kullanmasına izin verilen kodlamalar; varsayılan olarak hem gzip hem de deflate. İstemci her ikisini de kabul ettiğinde gzip tercih edilir.
ContentTypes — sıkıştırmaya uygun içerik türlerinin listesi, "text/*" gibi joker karakterler desteklenir; varsayılan olarak yaygın metin, JSON, JavaScript, XML ve SVG türlerini içerir.
Sunucu, kodlamayı isteğin Accept-Encoding başlığından belirler ve 0 kalite değerini bir ret olarak kabul eder (örneğin "gzip;q=0"). Zaten bir Content-Encoding'e, 204/304/1xx durumuna, bir Server-Sent Events akışına sahip veya sonuçta daha küçük olmayacak bir yanıtı asla sıkıştırmaz. Sıkıştırdığında, yanıtın Content-Encoding başlığını ayarlar ve önbelleklerin kodlamayı doğru şekilde anahtarlaması için Vary: Accept-Encoding başlığını ekler.
HTTPCompression şu anda yalnızca HTTP/1.1 yanıtlarına uygulanır; HTTP/2 yanıtları bu özellik tarafından sıkıştırılmaz. Bir TLS bağlantısı üzerinden bir sırrı (CSRF token gibi) saldırgan tarafından etkilenen verilerle birleştiren içeriği sıkıştırırsanız, yanıt sıkıştırmasının BREACH sınıfı saldırıyı mümkün kıldığını unutmayın; bu, HTTP sıkıştırmasının genel bir özelliğidir, bu uygulamaya özgü bir durum değildir.
oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.DocumentRoot := 'C:\inetpub\wwwroot';
oServer.HTTPCompression.Enabled := true;
oServer.HTTPCompression.MinSize := 1024;
oServer.Active := true;