我已配置apache 2.4
為在將內容傳送到客戶端之前對其進行壓縮,並使用mod_deflate
並將客戶端標頭設為"Accept-Encoding: gzip"
.所以我已經開始工作,產生一個有效的 gzip 壓縮檔:
curl --header "Accept-Encoding: gzip" https://my.website/ > content.gz
有沒有辦法允許"Accept-Encoding: zip"
壓縮為zip
?
據我了解的文檔,這似乎不可能:
gzip 編碼是唯一支援以確保與舊瀏覽器實作完全相容的編碼。不支援deflate編碼...(https://httpd.apache.org/docs/2.4/mod/mod_deflate.html)
問題來自Windows
無法解壓縮gzip
檔案的使用者(我猜只使用 Windows 原生工具)。
[編輯:正如 gerald-schneider 所指出的那樣,瀏覽器會自動解壓縮內容 - 但我們正在使用curl
此類命令列工具來編寫 API 腳本,因此不涉及瀏覽器。也感謝所有其他答案和評論,我想我應該更精確,即curl
首先寫下命令]。
答案1
我認為您誤解了 HTTP 協定中的壓縮的用途。它不適用於下載檔案。這是為了減少您只是瀏覽時傳輸的資料。它壓縮的檔案有 HTML、CSS、JavaScript 和圖片。解壓縮由瀏覽器在顯示頁面之前處理。並且瀏覽器可以在 Windows 上很好地處理 gzip。
答案2
正如問題對 apache 文件的引用所指出的那樣不是可以設定 apache 來提供壓縮的內容,並將zip
客戶mod_deflate
端的標頭設定為Accept-Encoding: zip
.只gzip
有效。如果用戶使用瀏覽器該瀏覽器將即時對其進行解碼。如果用戶下載例如,curl
她必須gzip
使用作業系統本機工具或已安裝的工具來壓縮 ed 內容(後者對 Windows 使用者來說是必要的)。
答案3
看了你的評論,我有點不確定你在問什麼:
- 您是否希望您的 apache 伺服器使用 Zip 編碼而不是 Gzip 發送普通(例如 html 或純文字)檔案? (根據文件不可能)
- 您希望curl能夠從您的伺服器取得資料嗎? (在這種情況下,您無需擔心編碼,因為它只是「次要」網路優化)
- 您想讓curl 下載一些zip 內容嗎?在這種情況下,您應該配置 httpd,以便它可以透過一些「靜態檔案」設定直接為您的 zip 檔案提供服務
不管怎樣,我不確定內容編碼是你在這裡尋找的...