В этой статье не приводится никаких «среднеотраслевых» цифр. Все данные по сжатию взяты из собственных тестов, а формулы расчета стоимости даны для того, чтобы вы могли подставить свои реальные тарифы и получить результат.
Ежемесячно проверяя облако, большинство людей смотрят только на общую сумму: чуть больше, чем в прошлом месяце, но в бюджете — и так проходит.
Но если развернуть счет и разбить по продуктам, многие сайты, мини-приложения и платформы контента замечают, что на первых местах обычно стоят всего две позиции:
- Объектное хранилище: плата за хранение в расчете на ГБ в месяц
- CDN / Трафик в общую сеть: плата за трафик в расчете на ГБ
А среди этих двух пунктов обычно больше всего места занимают изображения.
Проблема в том, что значительная часть байтов этих изображений пользователи просто не могут отличить, а вы каждый месяц платите за них.
1. «Сжато при загрузке» не означает «сжато достаточно»
Многие команды говорят: «Мы сжимаем при загрузке».
Мы специально протестировали этот сценарий. Образец — сайт, где пользователи могут загружать изображения; перед сохранением в базе уже была выполнена стандартная сжатая обработка: 78 папок, 4624 изображения, всего 1,41 ГБ.
| Объем | Относительно исходного | |
|---|---|---|
| Исходный файл (уже сжатый сайтом) | 1,41 ГБ | — |
| Запаковано в zip | 1,41 ГБ | -0,2% |
| Дополнительное сжатие ImgZilla | 0,75 ГБ | -46,8% |
На базе «уже сжатого» мы сэкономили почти половину. И из 4624 изображений каждое можно сжать еще сильнее, ни одно не является «уже до предела, пропустить сразу».
Причина не сложна: большинство сжатий при сохранении просто устанавливает общий параметр качества или ограничивает размер, что относится к консервативной однократной обработке и не использует весь кодировочный потенциал каждого формата.
Если ваша библиотека изображений состоит из файлов, снятых камерой напрямую, экспортированных из дизайн-проектов или загруженных операторами в исходном виде, объем еще больше. Мы протестировали 32 188 фотографий JPEG, снятых камерами напрямую, и общий объем уменьшился на 76,8%.
2. Плата за хранение — это сложение, а плата за трафик — умножение
Это самый легко упускаемый из виду момент.
- Плата за хранение: изображение хранится в бакете, и каждый месяц взимается плата в зависимости от его объема
- Плата за трафик: каждое открытие изображения дополнительно взимается плата в зависимости от его объема
Поэтому лишние 300 КБ бесполезных байтов на баннере главной страницы почти не заметны в счете за хранение, но если он открывается 100 000 раз в день, на счете за трафик это составляет примерно 29 ГБ ежедневно.
Чем популярнее изображение, тем больше вы переплачиваете. И самые популярные изображения — это как раз баннеры главной страницы, главные изображения товаров, изображения в начале статей — те самые места, где чаще всего «просто загружают исходники».
3. Рассчитайте свой собственный счет
Не верьте никаким оценкам, возьмите свой счет за прошлый месяц и подставьте в следующие две формулы:
Месячная экономия на хранении ≈ Общий объем хранения изображений (ГБ) × Коэффициент сжатия × Цена хранения (юани/ГБ·мес)
Месячная экономия на трафике ≈ Месячный объем трафика изображений вниз (ГБ) × Коэффициент сжатия × Цена трафика (юани/ГБ)
Коэффициент сжатия можно сначала оценить консервативно на уровне 40% (меньше, чем наши 46,8% для «уже сжатых» изображений), а затем, когда вы обработаете свои собственные изображения, замените на реальные цифры.
Приведем демонстрационный пример (цены — условные, замените их на свои из счета):
| Параметр | Значение |
|---|---|
| Объем хранения изображений | 500 ГБ |
| Месячный объем трафика изображений вниз | 10 ТБ |
| Цена хранения (условно) | 0,12 юаня/ГБ·мес |
| Цена трафика (условно) | 0,20 юаня/ГБ |
- Хранение: 500 × 40% × 0,12 ≈ 24 юаня/мес
- Трафик: 10 240 × 40% × 0,20 ≈ 819 юаней/мес
Можно увидеть, что по-настоящему крупная сумма — это трафик. Экономия на хранении — это мелочь, экономия на трафике — реальные деньги. И эти деньги платятся ежемесячно, пока изображения не обработаны, платежи продолжаются.
Есть и другие доходы, которые не видны в счете: загрузка страниц становится быстрее, мобильные пользователи тратят меньше трафика, показатели LCP становятся лучше, размер главного пакета мини-приложения легче уложится в лимит.
4. Почему, зная, что сжатие нужно, никто этого не делает?
Мы спросили многих разработчиков и владельцев сайтов, и ответы сводятся в основном к трем пунктам:
1. Страх изменения путей.
Обычные онлайн-инструменты требуют «загрузить → скачать → переименовать → заменить → изменить ссылки в коде», и никто не решается на это в проектах с тысячами изображений.
2. Страх ухудшения качества.
После сжатия вас могут упрекнуть дизайнеры, операторы или босс: «картинка размылась». Никто не хочет отвечать за это.
3. Слишком хлопотно.
Каталоги вложены друг в друга, обработка по одной картинке нереальна, а для написания скриптов нужно подбирать параметры и разбираться с разными форматами.
ImgZilla создан именно для решения этих трех проблем:
- Сжатие на месте: после сжатия файлы напрямую заменяют оригиналы, структура имен и каталогов остается полностью неизменной, ссылки в коде менять не нужно ни на одну строку
- Визуально без потерь: PNG и SVG — настоящее без потерь; для JPEG, WebP, AVIF и HEIC подбираются отдельные параметры для каждого формата в пределах, которые человеческий глаз не может различить. Встроено сравнение слева направо с возможностью увеличения до реальных пикселей для самостоятельной проверки
- Просто перетащить папку: рекурсивная обработка всех подпапок, не нужно выбирать файлы или двигать ползунки
- Полностью локальная обработка: внутренние ресурсы, изображения неопубликованных товаров не нужно загружать на сторонние серверы
5. Практический процесс «похудения» бакета хранилища
Если ваши изображения уже находятся в объектном хранилище, процесс выглядит примерно так:
- Синхронизация с локальной машиной: используйте инструменты вроде
rclone,ossutil,coscmd,aws s3 sync, чтобы вытащить каталог изображений на Mac - Сначала сделайте резервную копию: не волнуйтесь, это хорошая привычка, а не потому, что инструмент ненадежен
- Перетащите в ImgZilla: перетащите весь каталог и дождитесь завершения
- Синхронизация обратно в бакет: используйте тот же инструмент для перезаписи и загрузки, пути остаются прежними
- Обновление кэша CDN: выполните обновление каталога для каталога с изображениями, чтобы пограничные узлы получили новые файлы
Не пропустите 5-й шаг. Если его не сделать, узлы CDN продолжат раздавать старые файлы, и счет за трафик начнет снижаться только после истечения времени жизни кэша.
6. Честное описание
- ImgZilla в настоящее время доступен только для macOS (требуется macOS 12.3 и выше), версии для Windows нет
- За исключением PNG и SVG, другие форматы сжимаются визуально без потерь, а не с точностью до пикселя. Если вашему бизнесу требуется абсолютная идентичность пикселей (например, медицинские изображения, материалы для сравнения пикселей), не кодируйте такие файлы заново
- Коэффициент сжатия зависит от изображения. Наши реальные показатели сжатия на одно изображение варьировались от 32% до 86%, рекомендуем сначала протестировать один каталог, чтобы увидеть реальные цифры, прежде чем принимать решение
В заключение
Вендоры облачных сервисов не будут напоминать вам, что изображения можно сделать меньше, а в счете не будет отдельной строки «бесполезные байты».
Но они там есть, каждый месяц оплачиваются по ГБ, и за каждое открытие взимается дополнительная плата.
Перетащите каталог с изображениями в ImgZilla и запустите. Сравните свои счета за следующий месяц.
👉 Скачать ImgZilla: https://imagetool.app/ImgZilla
