Стоит ли использовать сжатие изображений для небольшого уменьшения размера, но для сжатия и распаковки накладных расходов?

38

Большинство форматов изображений уже сжаты. Но на самом деле, если я беру изображение и сжимаю его (распаковываю), а затем сравниваю сжатое изображение с несжатым, есть разница в размере, хотя и не такая существенная разница.

Вопрос: стоит ли архивировать изображения? размер контента, сбрасываемого в браузер клиента, будет меньше, но при его разархивировании будут некоторые накладные расходы клиента.

Стивен Остермиллер
источник
2
Если узкое место вашего сервера ближе к сети, чем к процессору, конечно. Иначе, там могут быть нижние висящие фрукты.
Конерак

Ответы:

31

Google ссылается на gzip и графические / бинарные файлы в разделе Минимизировать размер полезной нагрузки.

Не используйте gzip для изображений или других двоичных файлов.

Форматы файлов изображений, поддерживаемые в Интернете, а также видео, PDF и другие двоичные форматы уже сжаты; использование gzip для них не даст никаких дополнительных преимуществ и может на самом деле увеличить их. Чтобы сжать изображения, см. Оптимизация изображений .

Джон Сампсон
источник
1
favicon.ico - исключение, которое стоит упомянуть. Изображения ICO не сжимаются, поэтому gzip работает с ними очень хорошо.
кошка
8

Это будет зависеть от того, что важнее, от ресурсов распаковки клиента (время, вычислительная мощность, память и т. Д.) Или пропускной способности сети.

Пример 1) Ваши клиентские системы либо очень близки к серверу (скажем, в локальной сети), либо имеют высокоскоростные соединения, однако они очень маломощные (возможно, встроенные системы с ограниченными ресурсами). Вы НЕ хотели бы иметь какие-либо накладные расходы на стороне клиента (без gziping) и могли бы легко позволить себе накладные расходы на передачу (несколько байтов не имеют значения в реальном мире в локальной сети).

Пример 2) Все ваши клиенты - системы с очень высокой производительностью (скажем, офисные рабочие станции выше среднего), однако их тысячи, и у вашего сервера ограниченное распределение пропускной способности. В этом сценарии конечные пользователи могут легко предоставить служебные данные, и каждый байт имеет значение для сервера. Gzip прочь!

Реальный мир) Скорее всего, вам НЕ лучше печатать изображения. Однако современные системы вполне могут позволить себе такую ​​обработку, если вы ожидаете, что кто-то будет использовать сотовый телефон или другую маломощную систему. Кроме того, вы накладываете ограничение на то, что получатель сможет распаковать. В большинстве случаев это не должно быть проблемой, но зачем кого-то ограничивать? Экономия по размеру будет тривиальной, а затраты на обработку не будут ни для какой системы. Чем больше экономии размера вы ожидаете, тем больше нагрузка на процессор, поэтому всякий раз, когда вы экономите при передаче по любому обычному типу соединения, есть шанс просто воссоздать время, затраченное на обработку gzip во что-то пригодное для использования.

Ваша лучшая ставка IMO - изучить более высокую оптическость и альтернативные форматы изображений. Не все JPEG созданы одинаковыми. Пример: сохраните изображение в формате jpeg в фотошопе, затем «сохранить для Интернета и устройств» в формате jpeg, размер файла должен резко отличаться при одинаковых настройках качества. Кроме того, опция «сохранить для» предоставляет гораздо больше опций для точной настройки качества и размера файла. Не бойтесь более «устаревших» форматов, таких как GIF. Если ваше изображение хорошо отображается в пределах ограничений формата GIF, оно, вероятно, будет еще меньше и даст дополнительные преимущества, такие как прозрачность ...


источник
Спасибо за ваш подробный ответ. Сценарий, о котором я говорю, - это сценарий, который включает в себя миллионы существующих изображений, частично оптимизированных, на веб-сайте электронной коммерции. Таким образом, ясно, что наивысшим приоритетом является быстрый рендеринг на стороне клиента, и что машины клиентов имеют средний и меньший уровень мощности. Сохранение в другом формате - это не вариант [огромные инвестиции]. Лучшее решение было бы в случае, как это [так много существующих изображений], иметь инструмент, который может оптимизировать все файлы JPEG в папке. Вы знакомы с таким инструментом?
Есть бесплатная утилита командной строки под названием jpegtran, которая оптимизирует JPEG, она может быть в состоянии пакетной обработки всех изображений в папке, так что, возможно, стоит изучить.
Тим Фонтан
7

Нет, на самом деле это может ухудшить ситуацию. Из передовой практики Yahoo для ускорения вашего веб-сайта :

Файлы изображений и PDF не должны быть сжаты, потому что они уже сжаты. Попытка сжать их не только приводит к потере ресурсов процессора, но и потенциально может увеличить размер файла.

nthonygreen
источник