Автоматическая оптимизация изображений сайта

Последние несколько лет я достаточно тесно сотрудничаю с сео-специалистами в продвижении сайтов на базе 1С-Битрикс. Одной из первых задач от сеошников является приведение работы сайта к зеленым показателям в Google Page Speed. В 90% случаев, сайты, поднятые на готовых решениях, уже удовлетворяют всем требованиям, кроме оптимизации изображений и наличия несжатых css и js файлов.

Сегодня покажу на примере, как настроить автоматическое сжатие изображений.

Для оптимизации изображений использую скрипт zImageOptimizer. Скрипт устанавливается на сервер вместе со всеми необходимыми ему зависимостями.

При вызове скрипта доступны следующщие опции (опции можно комбинировать):

  • -h (--help) - справка работы со скриптом. При указании данной опции другие опции будут проигнорированы;
  • -v (--version) - просмотр версии скрипта. При указании данной опции другие опции будут проигнорированы;
  • -p (--path) - используется для указания пути к обрабатываемому изображению. Путь может быть как со слешем на конце, так и без;
  • -q (--quiet) - работа скрипта без лишних вопросов к пользователю;
  • -l (--less) - не будет показывать процесс оптимизации;
  • -c (--check-only) - проверка установки зависимостей скрипта. При указании данной опции другие опции будут проигнорированы;
  • -t (--time) - установка периода, за который просматривать модификаци файлов;
  • -n (--new-only) - использовать временные метки только для поиска новых изображений. Одновременное использование опций -t и -n не возможно;
  • -m (--time-marker) - указание файла собственной временной метки. Имеет смысл только при опции -n;
  • -tmp (--tmp-path) - указание пути к каталогу со временными файлами;
  • -e (--exclude) - указанные через запятую пути к изображениям, которые нужно исключить из оптимизации.

Установка скрипта оптимизации на сервер

Для установки скачиваем файл в домашнюю папку пользователя, являющегося владельцем всех файлов сайта, т.е. в случае работы с BitrixVM - /home/bitrix:

wget https://raw.githubusercontent.com/zevilz/zImageOptimizer/master/zImageOptimizer.sh -O /home/bitrix/zImageOptimizer.sh

Установка зависимостей может быть выполнена 2 вариантами - при запуске скрипта - скрипт предложит установить все зависимсти автоматически, либо можно установить все самому. Процесс ручной установке описан на домашней странице скрипта. Для автоматической установки всех зависимостей, запускаем скрипт:

sudo bash zImageOptimizer.sh -c

Параметр "-c" означает, что скрипт покажет установленный софт и спросит об установке отсутствующих пакетов. Нажмите 1 и Enter, чтобы выбрать вариант "1. Install dependences and exit", установка запустится. После установки всех зависимостей, можно повторно вызвать эту же команду, чтобы убедиться, что все компоненты установлены - у всех компонентов будет статус "FOUND".

Только первый запуск скрипта нужно выполнять с root-правами, чтобы скрипт имел возможность установить недостающие компоненты. После того нужно переавторизоваться под пользователем, владельцем файлов сайта:

su bitrix

Проверяем, что переавторизация прошла успешно:

whoami

Теперь можно переходить к процедуре оптимизации изображений на сайте.

Предварительно настоятельно рекомендую сделать бекап сайта - мало ли что-то пойдет не так. Это можно сделать либо штатным средствами bitrix, либо воспользоваться командой: (не забудьте сначала создать папку: /home/bitrix/backup/site-com-images/)

rsync -avh --include '*/' --include '*.jpg' --include '*.png' --exclude '*' /home/bitrix/ext_www/site.com/ /home/bitrix/backup/site-com-images/

Чтобы откатиться до бекапа, нужно выполнить команду:

rsync -a /home/bitrix/backup/site-com-images/ /home/bitrix/site.com/

Оптимизация работает в 3-х режимах: простая оптимизация, оптимизация с использованием меток времени и оптимизация файлов, созданных за определенный период.

Оптимизация всей графики в папке

Данный вариант - самый простой и подходит, например, для разового использования. Будут оптимизированы все изображения - и те, которые еще не оптимизированы и ранее оптимизированные.

Запуск скрипта в таком варианте исполнения осуществляется командой:

bash zImageOptimizer.sh -p /путь/до/каталога/

Скрипт пропустит через несколько утилит оптимизации все файлы JPEG, PNG и GIF в указанном и вложенных каталогах. Для разовой оптимизации подходит, но не более того. Повторно сжимать графику нет смысла, потому что сжатия не будет.

Оптимизация с использованием метки времени

Данный вариант больше всего подходит для периодических запусков. При запуске скрипт посмотрит время файла-метки и оптимизирует только те графические файлы, которые были созданы после предыдущей оптимизации. Старые, уже оптимизированные изображения проигнорируются.

Чтобы выполнить оптимизацию изображений в каталоге (с учетом вложенных подразделов), необходимо выполнить команду:

bash zImageOptimizer.sh -p /путь/до/каталога/ -n

В результате выполнения скрипта в указанном каталоге будет создан файл метки и, при повторном запуске, будут оптимизированы только новые файлы. При этом, если в скрипт передать каталог уровнем выше, то метка учитываться не будет, т.к. файл метки не будет найден. Чтобы этого избежать, можно указать файл метки вручную:

bash zImageOptimizer.sh -p /путь/до/каталога/ -n -m /home/bitrix/site_name/.timemarker

Оптимизация файлов, созданных за определённый промежуток времени

Это еще один вариант разового ручного запуска. Таким образом, можно организовать сжатие без создания дополнительных меток. Например, чтобы сжать изображения, появившиеся на сервере за прошедшие сутки, можно выполнить команду:

bash /home/bitrix/zImageOptimizer.sh -p /путь/до/каталога/ -t 1d

При этом, параметры могут быть заданы в зависимости от динамичности наполнения сайта данными:

  • дни: 1d,2d,3d ...
  • часы: 1h,2h,10h ...
  • минуты: 1m, 15m, 30m ...

Такой метод подходит для разового запуска, но не годится для регулярной оптимизации, т.к. уже оптимизированные файлы будут новее, чем время запуска предыдущего скрипта, поэтому они снова попадут под скрипт оптимизации.

Таким образом, для регулярной оптимизации подходит только вариант с временными метками - он наиболее удобный и наиболее надежный.

Регулярный запуск скрипта по крону

Для автоматизации процесса оптимизации изображений, выполнение скрипта нужно сделать самостоятельным и регулярным. Для этого запуск скрипта нужно поместить в cron. Например, запуск каждые сутки в 3 ночи будет выглядеть так:

0 3 * * * bash /home/bitrix/zImageOptimizer.sh -p /путь/до/каталога/ -q -n -m /home/bitrix/sitename/.timemarker

Такая запись позволит через просмотр списка файлов домашней папки bitrix-пользователя, увидеть, когда была произведена последняя оптимизация и убедиться, что скрипт работает.

Кількість показів: 2256
05.10.2018

Повернення до списку

Если вам была полезна статья можете отблагодарить автора: