Apache: Komprimieren als Zip (nicht Gzip)

Apache: Komprimieren als Zip (nicht Gzip)

Ich habe die Konfiguration so vorgenommen apache 2.4, dass der Inhalt vor der Übermittlung an den Client komprimiert wird. Dabei verwende ich mod_deflateund der Client-Header ist auf gesetzt "Accept-Encoding: gzip". Dies funktioniert also bereits und erzeugt eine gültige gzippte Datei:

curl --header "Accept-Encoding: gzip" https://my.website/ > content.gz

"Accept-Encoding: zip"Gibt es eine Möglichkeit, die Komprimierung zuzulassen zip?

Soweit ich die Dokumentation verstehe, scheint dies nicht möglich zu sein:

Um vollständige Kompatibilität mit alten Browserimplementierungen zu gewährleisten, wird nur die gzip-Kodierung unterstützt. Die Deflate-Kodierung wird nicht unterstützt ... (https://httpd.apache.org/docs/2.4/mod/mod_deflate.html)

Die Frage kommt von einem WindowsBenutzer, der gzipDateien nicht entpacken kann (ich vermute, er verwendet nur native Windows-Tools).

[bearbeiten: wie gerald-schneider bemerkte, dekomprimiert ein Browser den Inhalt automatisch – aber wir verwenden solche Befehlszeilentools, um die API skripten zu können, und daher ist kein Browser beteiligt. Danke auch an alle anderen Antworten und Kommentare, ich denke, ich hätte präziser sein sollen, d. h. den Befehl von Anfang an curlaufschreiben sollen ].curl

Antwort1

Ich glaube, Sie haben missverstanden, wozu die Komprimierung im HTTP-Protokoll dient. Sie dient nicht zum Herunterladen von Archiven. Sie dient dazu, die Datenmenge zu reduzieren, die beim bloßen Surfen übertragen wird. Die Dateien, die dadurch komprimiert werden, sind HTML, CSS, JavaScripts und Bilder. Die Dekomprimierung wird vom Browser durchgeführt, bevor er die Seiten anzeigt. Und die Browser können unter Windows problemlos mit gzip umgehen.

Antwort2

Wie in der Frage in der Apache-Dokumentation erwähnt, ist esnichtmöglich, Apache so zu konfigurieren, dass Inhalte komprimiert bereitgestellt werden, wenn zipder mod_deflateHeader des Clients auf gesetzt ist Accept-Encoding: zip. gzipFunktioniert nur. Wenn ein Benutzer einenBrowserdieser Browser wird es sofort dekodieren. Wenn der BenutzerDownloadsden Inhalt beispielsweise curlmuss sie mit Gunzip komprimieren gzip, sei es mit nativen oder installierten Tools des Betriebssystems (letzteres ist beispielsweise für Windows-Benutzer erforderlich).

Antwort3

Beim Lesen Ihres Kommentars bin ich mir nicht ganz sicher, was Sie fragen:

  • Möchten Sie, dass Ihr Apache-Server normale Dateien (z. B. HTML oder Klartext) mit einer Zip-Kodierung statt mit Gzip sendet? (Laut Dokumentation unmöglich)
  • Möchten Sie, dass curl Daten von Ihrem Server abrufen kann? (In diesem Fall müssen Sie sich keine Gedanken über die Kodierung machen, da es sich lediglich um eine „geringfügige“ Netzwerkoptimierung handelt.)
  • Möchten Sie, dass curl Zip-Inhalte herunterlädt? In diesem Fall sollten Sie stattdessen httpd so konfigurieren, dass es Ihr Zip-Archiv direkt mit einigen „statischen Datei“-Einstellungen bereitstellt.

Wie dem auch sei, ich bin nicht sicher, ob die Inhaltscodierung das ist, wonach Sie hier suchen ...

verwandte Informationen