GZipped Images - Lohnt es sich?

35

Die meisten Bildformate sind bereits komprimiert. Aber wenn ich ein Bild nehme und es komprimiere (gzippen) und dann das komprimierte mit dem unkomprimierten vergleiche, gibt es tatsächlich einen Unterschied in der Größe, auch wenn dies kein so dramatischer Unterschied ist.

Die Frage ist: Lohnt es sich, Bilder zu komprimieren? Die Größe des Inhalts, der in den Browser des Clients heruntergeladen wird, ist geringer, es entsteht jedoch ein gewisser Client-Overhead, wenn er dekomprimiert wird.

Bitte beraten.


quelle
2
Wenn Ihr Server-Engpass im Netzwerk näher ist als auf der CPU, stellen Sie sicher. Andernfalls kann es niedrigere hängende Früchte geben.
Konerak

Antworten:

29

Google verweist auf gzip- und Bild- / Binärdateien unter Minimieren der Nutzlastgröße

Verwenden Sie gzip nicht für Bilder oder andere Binärdateien.

Vom Web unterstützte Bilddateiformate sowie Videos, PDFs und andere Binärformate sind bereits komprimiert. Die Verwendung von gzip bietet keinen zusätzlichen Vorteil und kann sie tatsächlich vergrößern. Informationen zum Komprimieren von Bildern finden Sie unter Optimieren von Bildern .

John Sampson
quelle
favicon.ico ist eine erwähnenswerte Ausnahme. ICO-Bilder werden nicht komprimiert, sodass gzip sehr gut mit ihnen funktioniert.
eine Katze
7

Dies hängt davon ab, was wichtiger ist, von den Client-Dekomprimierungsressourcen (Zeit, Rechenleistung, Speicher usw.) oder von der Netzwerkbandbreite.

Beispiel 1) Ihre Client-Systeme befinden sich entweder sehr nahe am Server (z. B. in einem lokalen Netzwerk) oder verfügen über Hochgeschwindigkeitsverbindungen, weisen jedoch eine sehr geringe Leistungsaufnahme auf (möglicherweise eingebettete Systeme mit begrenzten Ressourcen). Sie möchten KEINEN clientseitigen Overhead (Ent-Gziping) und können sich den Transfer-Overhead leicht leisten (ein paar Bytes machen in der realen Welt in einem lokalen Netzwerk keinen Unterschied).

Beispiel 2) Ihre Clients sind alle Systeme mit sehr hoher Leistung (z. B. überdurchschnittliche Büroarbeitsplätze), es gibt jedoch Tausende davon, und Ihr Server verfügt nur über eine begrenzte Bandbreitenzuweisung. In diesem Szenario können sich die Endbenutzer den Overhead leicht leisten und jedes Byte ist für den Server von Bedeutung. gzip weg!

Real World) Sie sind wahrscheinlich NICHT besser dran, Ihre Bilder zu zippen. Moderne Systeme können sich die Verarbeitung jedoch leisten, wenn Sie reale Erwartungen haben, dass jemand ein Mobiltelefon oder ein anderes System mit geringer Leistung verwendet. Außerdem legen Sie die Einschränkung fest, dass der Empfänger die Gzip-Funktion deaktivieren kann. Sollte die meiste Zeit kein Problem sein, aber warum sollte man jemanden einschränken? Die Größenersparnis ist trivial und der Verarbeitungsaufwand für kein System. Je höher die zu erwartende Größenersparnis ist, desto höher ist der Prozessor-Overhead. Wenn Sie also bei der Übertragung über einen normalen Verbindungstyp Zeit sparen, kann dies bis zur Verarbeitung des gzip zu etwas Verwendbarem erneut erfolgen.

Ihre beste Wahl IMO ist es, sich mit höherer Optomisierung und alternativen Bildformaten zu befassen. Nicht alle JPEGs sind gleich. Beispiel: Speichern Sie ein Bild als JPEG in Photoshop und dann "Für Web und Geräte speichern" als JPEG. Die Dateigröße sollte sich bei gleichen Qualitätseinstellungen drastisch unterscheiden. Darüber hinaus bietet die Option "Speichern für" viele weitere Optionen für die Feinabstimmung von Qualität und Dateigröße. Haben Sie auch keine Angst vor "veralteten" Formaten wie GIFs. Wenn Ihr Bild innerhalb der Einschränkungen des GIF-Formats gut angezeigt wird, ist es wahrscheinlich noch viel kleiner und bietet zusätzliche Vorteile wie Transparenz ...


quelle
Vielen Dank für Ihre ausführliche Antwort. Das Szenario, von dem ich spreche, ist ein Szenario, das Millionen vorhandener, teilweise optimierter Bilder auf einer E-Commerce-Website umfasst. Es ist also klar, dass das schnelle Rendern auf der Clientseite die höchste Priorität hat und dass die Maschinen der Clients durchschnittlich und weniger leistungsfähig sind. Das Speichern in einem anderen Format ist keine Option [enorme Investition]. Die beste Lösung wäre in einem Fall wie diesem [so viele vorhandene Bilder] ein Tool zu haben, das alle JPEG-Dateien in einem Ordner optimieren könnte. Kennen Sie ein solches Tool?
Es gibt ein kostenloses Befehlszeilenprogramm namens jpegtran, das JPEGs optimiert. Es kann möglicherweise alle Bilder in einem Ordner stapelweise verarbeiten, sodass es sich lohnt, dies zu untersuchen.
Tim Fountain
6

Nein, es könnte alles noch schlimmer machen. Aus den Best Practices von Yahoo zur Beschleunigung Ihrer Website :

Bild- und PDF-Dateien sollten nicht komprimiert werden, da sie bereits komprimiert sind. Der Versuch, sie zu gzipen, verschwendet nicht nur CPU, sondern kann möglicherweise die Dateigröße erhöhen.

nthonygreen
quelle
0

Trimage ist ungefähr so gut , wie es Bilder für die Optimierung wird (abhängig von OptiPNG, pngcrushund jpegoptim, wenn ich mich erinnere). Ich benutze oft pngcrushdirekt im Rahmen des Einsatzes, z

$ for i in *.png; do pngcrush -rem allb -brute -reduce $i crushed/$i; done;
simon
quelle