Размер изображений составляет существенную часть от размера страницы. Вот уже второй день вожусь с оптимизацией изображений в блоге. До этого я [использовал скрипт, который позволяет сжать jpg и png без потерь.](https://struchkov.dev/blog/ru/image-optimization/)
Теперь решил пойти еще дальше и использовать Webp формат.
WebP - это формат сжатия изображений, разработанный компанией Google. Он использует современный алгоритм сжатия, который обеспечивает более эффективное сжатие, чем форматы JPEG и PNG, что может привести к быстрее загрузке веб-страниц и экономии интернет-трафика.
В итоге пришел к такому кейсу:
1. Прогоняю [скриптом сжатия без потерь.](https://struchkov.dev/blog/ru/image-optimization/)
2. Прогоняю скриптом для преобразования в webp. Сохраняю все изображения в отдельную папку.
3. Nginx пытается сначала найти webp изображение, если не получается, то берет сжатый png или jpg
А вот и сам скрипт для преобразования в webp:
```shell
#!/bin/bash
file=webp.flag
if [ -f "$file" ]; then
option="-newer $file"
fi
find ./struchkov.dev/www/images/ -type f -iregex '.*\.\(jpg\|jpeg\|png\)' $option -exec sh -c '
Также как и в первом скрипте, я использую файл-флаг, чтобы не преобразовывать файлы, которые уже преобразовывались.
Далее я беру папку `/struchkov.dev/www/images/`, в которой лежат исходные изображения и создаю новую папку `/struchkov.dev/www/images/webp`. Внутри папки `webp` структура папок и файлов такая же, как и в папке `images`. Только формат у файлов `.webp`.
За преобразование отвечает команда `cwebp`. Эта утилита сжимает изображения, но с потерями в качестве. Я подобрал оптимальные параметры сжатия, чтобы потеря качества была не заметна, но при этом изображения занимали меньше места.