Http

是否可以為請求啟用 http 壓縮?

  • April 17, 2020

我看到很多關於為伺服器響應啟用 http 壓縮的資訊,但是對於傳入的請求呢?瀏覽器在將大型文章發送到伺服器之前壓縮它們是否有意義?

另一個例子是我們使用的 REST Web 服務。我們必須頻繁發送帶有大型 XML 文件 (10+ MB) 的 PUT 請求,並且肯定會在雙方看到一些頻寬/速度優勢。

那麼這是在伺服器端解決的問題,還是每個 Web 應用程序都必須單獨處理?

要將PUT數據壓縮到伺服器,您必須壓縮請求正文並設置Content-Encoding: gzip標頭。標頭本身必須是未壓縮的。它記錄在mod_deflate

mod_deflate 模組還提供了一個過濾器,用於解壓縮 gzip 壓縮請求體。為了啟動此功能,您必須使用 SetInputFilter 或 AddInputFilter 將 DEFLATE 過濾器插入到輸入過濾器鏈中。

現在,如果請求包含 Content-Encoding: gzip 標頭,則正文將自動解壓縮。很少有瀏覽器能夠對請求正文進行 gzip 壓縮。然而,一些特殊的應用程序確實支持請求壓縮,例如一些 WebDAV 客戶端。

描述它的文章在這裡

你是怎麼做到的?這是來自 mod_deflate 原始碼的簡介:僅適用於主請求/無子請求。這意味著如果我們選擇使用它,請求的整個主體必須被 gzip 壓縮,不可能只壓縮包含文件的部分,例如在多部分請求中。

另外,瀏覽器可以通過在此處Accept-Encoding設置標頭來請求壓縮伺服器響應內容:

GET /index.html HTTP/1.1
Host: www.http-compression.com
Accept-Encoding: gzip
User-Agent: Firefox/1.0

這會將壓縮數據返回給瀏覽器。

引用自:https://serverfault.com/questions/56700