Czy gzipowanie obrazów jest warte obniżenia rozmiaru, ale kompresowania i dekompresji?

38

Większość formatów obrazu jest już skompresowana. Ale tak naprawdę, jeśli zrobię zdjęcie i skompresuję (zgzipuję), a następnie porównam ten skompresowany z nieskompresowanym, będzie różnica w rozmiarze, nawet jeśli nie jest to tak dramatyczna różnica.

Pytanie brzmi: czy warto zgzipować obrazy? rozmiar zawartości spuszczonej do przeglądarki klienta będzie mniejszy, ale podczas usuwania gzipu pojawi się narzut klienta.

Stephen Ostermiller
źródło
2
Jeśli wąskie gardło serwera jest bliżej w sieci niż na procesorze, na pewno. W przeciwnym razie mogą być wiszące owoce.
Konerak

Odpowiedzi:

31

Google odwołuje się do plików gzip i plików graficznych / binarnych w Minimalizuj rozmiar ładunku

Nie używaj gzip dla obrazów lub innych plików binarnych.

Obsługiwane przez Internet formaty plików graficznych, a także filmy, pliki PDF i inne formaty binarne są już skompresowane; użycie gzip na nich nie zapewni żadnych dodatkowych korzyści i może faktycznie zwiększyć je. Aby skompresować obrazy, zobacz Optymalizacja obrazów .

John Sampson
źródło
1
favicon.ico to wyjątek, o którym warto wspomnieć. Obrazy ICO nie są kompresowane, więc gzip działa na nich bardzo dobrze.
kot
8

Zależy to od tego, co jest ważniejsze, zasobów dekompresyjnych klienta (czasu, mocy obliczeniowej, pamięci itp.) Lub przepustowości sieci.

Przykład 1) Systemy klienckie są albo bardzo blisko serwera (powiedzmy w sieci lokalnej), albo mają szybkie połączenia, jednak są bardzo słabo zasilane (być może systemy osadzone z ograniczonymi zasobami). NIE chcesz mieć narzutu po stronie klienta (rozpakowywanie) i możesz sobie pozwolić na narzut związany z transferem (kilka bajtów nie ma znaczenia w świecie rzeczywistym w sieci lokalnej).

Przykład 2) Twoimi klientami są systemy o bardzo dużej mocy (powiedzmy, ponadprzeciętne stacje robocze w biurze), ale są ich tysiące, a twój serwer ma ograniczoną alokację przepustowości. W tym scenariuszu użytkownicy końcowi mogą łatwo pozwolić sobie na obciążenie i każdy bajt ma znaczenie dla serwera. zgryź!

Real World) Prawdopodobnie NIE powinieneś gzipować swoich zdjęć. Nowoczesne systemy mogą sobie pozwolić na przetwarzanie, jednak jeśli masz rzeczywiste oczekiwania, ktoś użyje telefonu komórkowego lub innego systemu o niskiej mocy. Dodatkowo nakładasz ograniczenie, które odbiornik może rozpakować. Nie powinno to stanowić większego problemu, ale po co ograniczać kogokolwiek? Oszczędności rozmiaru będą banalne, a narzut przetwarzania nie będzie dotyczył żadnego systemu. Im większa oszczędność rozmiaru, należy oczekiwać jeszcze większego narzutu procesora, więc za każdym razem, gdy zaoszczędzisz na transferze przez dowolny normalny typ połączenia, masz szansę na odtworzenie po czasie potrzebnym na przetworzenie gzipa w coś użytecznego.

Najlepszym rozwiązaniem IMO jest przyjrzenie się wyższej optomizacji i alternatywnym formatom obrazu. Nie wszystkie pliki JPEG są sobie równe. Przykład: zapisz obraz jako JPEG w Photoshopie, a następnie „zapisz dla Internetu i urządzeń” jako JPEG, rozmiar pliku powinien się drastycznie różnić przy tych samych ustawieniach jakości. Dodatkowo opcja „zapisz dla” zapewnia znacznie więcej opcji dostrajania jakości i rozmiaru pliku. Nie bój się także bardziej „przestarzałych” formatów, takich jak GIF-y. Jeśli twój obraz ładnie wyświetla się w granicach formatu GIF, prawdopodobnie będzie nadal znacznie mniejszy i oferuje dodatkowe korzyści, takie jak przezroczystość ...


źródło
Dziękujemy za szczegółową odpowiedź. Scenariusz, o którym mówię, to scenariusz obejmujący miliony istniejących obrazów, częściowo zoptymalizowanych, na stronie e-commerce. Jest więc jasne, że najwyższym priorytetem jest szybkie renderowanie po stronie klienta, a maszyny klientów są zasilane przeciętnie i mniej. Zapisywanie w innym formacie nie jest opcją [ogromna inwestycja]. Najlepszym rozwiązaniem byłoby w takim przypadku [tak wiele istniejących obrazów], aby mieć narzędzie, które może zoptymalizować wszystkie pliki JPEG w folderze. Czy znasz takie narzędzie?
Istnieje bezpłatne narzędzie wiersza polecenia o nazwie jpegtran, które optymalizuje pliki JPEG, może być w stanie przetwarzać wsadowo wszystkie obrazy w folderze, więc warto je zbadać.
Tim Fountain
7

Nie, w rzeczywistości mogłoby to pogorszyć sytuację. Z najlepszych praktyk Yahoo dotyczących przyspieszenia witryny :

Pliki obrazów i PDF nie powinny być gzipowane, ponieważ są już skompresowane. Próba ich zgzipowania nie tylko marnuje procesor, ale może potencjalnie zwiększyć rozmiary plików.

nthonygreen
źródło