Apache:壓縮為 zip(不是 gzip)

Apache:壓縮為 zip(不是 gzip)

我已配置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 檔案提供服務

不管怎樣,我不確定內容編碼是你在這裡尋找的...

相關內容