Top Man Digital: Ускорение сайта — WebP и контроль PageSpeed
Технические данные
- Опубликовано:
- 07.09.2026
- Обновлено:
- 11.09.2026
- Версия:
- 1.1.2
- Установлено:
- Менее 50 раз
- Подходящие редакции:
- «Первый сайт», «Старт», «Стандарт», «Малый бизнес», «Бизнес»
- Адаптивность:
- Нет
- Поддержка Композита:
- Нет
- Совместимо с Сайты24
- Нет
Пользовательское соглашение
Описание
Тяжёлые изображения, анимации и скрипты увеличивают время загрузки страниц. Top Man Digital Optimizer помогает уменьшить объём загружаемых файлов и раньше показать посетителю основное содержимое сайта.
Начните с базовой оптимизации одной кнопкой. Модуль включит WebP-копии изображений, загрузку картинок по мере прокрутки, резервирование места под них и приоритет главного изображения первого экрана.
Попробуйте модуль бесплатно в течение 7 дней и оцените результат на своём сайте.

Для первого запуска не нужно разбираться во всех настройках. Нажмите «Включить ускорение» на экране «Обзор» — модуль применит базовый набор оптимизаций.
Копии изображений готовятся постепенно. Чтобы обработать накопленные картинки сайта, нажмите «Подготовить копии картинок». Модуль выполнит работу в фоне и начнёт использовать готовые файлы на страницах.
Оригинальные изображения останутся на сервере.

На экране «Обзор» видно, сколько файлов подготовлено и насколько уменьшился их общий размер.
Замеры Google PageSpeed позволяют сравнить главную страницу до и после включения ускорения. Результаты показаны отдельно для телефона и компьютера: оценка производительности, время отрисовки, блокировки, сдвиги макета и вес страницы.
Для встроенных замеров нужно один раз указать API-ключ PageSpeed в настройках. Оптимизация файлов работает независимо от этих замеров.
Пример с тестового сайта: в представленном отчёте вес страницы уменьшился с 2,4 до 1,4 МБ. Результат зависит от исходного состояния сайта, выбранных настроек и условий измерения — сравните показатели своего проекта в демо-период.

Изображения в каталоге и карточках товаров. Модуль создаёт WebP-копии, откладывает загрузку картинок ниже первого экрана и задаёт приоритет главному изображению.
GIF-анимации. Тяжёлые GIF можно заменить лёгкими WebM-копиями с автоматическим воспроизведением без звука. На тестовой выборке из 32 анимаций общий размер уменьшился с 362 до 30 МБ.
Стили и шрифты. Модуль уменьшает CSS-файлы и позволяет отложить загрузку второстепенных стилей и подключений сервисов шрифтов.
Скрипты, счётчики и виджеты. Поддерживает уменьшение JavaScript-файлов и отложенное выполнение подходящих скриптов.
Встроенные видео и карты. Добавляет загрузку по мере прокрутки, чтобы браузер не загружал всё содержимое страницы сразу.
Дополнительные функции включаются отдельно. Можно менять настройки постепенно и проверять результат после каждого изменения.

Очередь может работать:
- через штатный агент 1С-Битрикс;
- по расписанию через cron;
- небольшими порциями после открытия страницы.
Если обработчик остановится во время задачи, модуль автоматически вернёт её в очередь.

В административной части можно:
- увидеть, работает ли ускорение;
- посмотреть количество готовых копий и сэкономленный объём;
- проверить поддержку WebP, Imagick и ffmpeg на сервере;
- следить за очередью фоновых задач;
- запускать массовую обработку изображений и анимаций;
- повторять и отменять задачи;
- находить и удалять неиспользуемые копии;
- смотреть историю изменений;
- подготовить диагностическую выгрузку для поддержки.
Перед удалением ненужных файлов модуль показывает, что именно будет удалено.
Исходные файлы сохраняютсяМодуль создаёт оптимизированные копии отдельно от изображений, CSS и JavaScript сайта. Чтобы прекратить их использование, достаточно отключить соответствующую функцию или ускорение целиком.
В административной части доступны очередь задач, повторная обработка файлов, проверка сервера и история изменений. Для нескольких сайтов можно использовать общие или индивидуальные настройки.
Проверьте ускорение за 7 днейУстановите демоверсию. Если планируете сравнение PageSpeed, сначала сохраните замер при выключенном ускорении. Затем включите базовую оптимизацию, дождитесь подготовки копий и повторите измерение.
Проверьте внешний вид и работу основных страниц. Оцените изменения в размере файлов и показателях загрузки — и решите, подходит ли модуль вашему сайту.
| 1.1.2 (11.09.2026) | Версия 1.1.2 - После окончания демо-периода экраны модуля открываются для просмотра с пояснением вместо сообщения «Модуль не загрузился». - Отказы в изменениях показываются по-русски; кнопка сохранения в настройках модуля недоступна, пока лицензия не разрешает изменений. - Неудачная повторная установка больше не удаляет таблицы и настройки, сохранённые при удалении модуля. - Удаление модуля снимает обработчик события OnGetFileSRC, который раньше оставался на сайте. - Включает правки 1.1.1: оформление административных экранов (отступы, таблица замеров, поле ключа PageSpeed). |
| 1.1.0 (09.09.2026) | Версия 1.1.0 Обновление собрано от версии 1.0.0 и несёт все изменения, вышедшие после неё. Оно встаёт на любую промежуточную версию: если какие-то обновления до сайта не доехали, ничего пропущено не будет. УПРАВЛЕНИЕ ОДНОЙ КНОПКОЙ Раньше от установки до ускоренной страницы было шесть осознанных шагов, и один из них - экран с пятнадцатью галочками, причём у свежей установки все они выключены. Теперь на вкладке "Обзор" рядом стоят две кнопки, которые закрывают всё, что нужно магазину: "Включить ускорение" и "Подготовить копии картинок". Первая сама отмечает безопасный набор: WebP через тег picture с оригиналом как запасным вариантом, загрузка по мере прокрутки, резерв места под картинки, приоритет главной картинки первого экрана. Каждая из этих правок либо срабатывает, либо не меняет страницу - вёрстка не поедет. Всё, что подменяет адрес без запасного варианта, меняет сам тег или пишет в кеш, не умеющий отвечать по-разному разным браузерам, кнопка не трогает: это остаётся отдельным решением. Набор применяется поверх сохранённых настроек, поэтому сайт, настроенный вручную, свою настройку сохраняет. Экран настроек открывается на том, о чём у владельца магазина есть мнение. Пятнадцать галочек разложены на три уровня - базовый открыт сразу, "расширенные возможности" и "ручная настройка" свёрнуты. Числовые параметры больше не первое, что видит человек, а аварийная остановка показывается тогда, когда она задействована, а не стоит постоянным вторым вопросом рядом с "ускорение включено". ЗАМЕРЫ PAGESPEED ДО И ПОСЛЕ Вкладка "Обзор" показывает, что говорит лаборатория Google о главной странице до включения ускорения и после: оценка, отрисовка самого крупного элемента, первая отрисовка, время блокировки, сдвиги макета, вес страницы - для телефона и для компьютера. Ключ PageSpeed указывается один раз на вкладке "Настройки"; он хранится отдельно от настроек сайтов, не попадает ни в историю изменений, ни в выгрузку для поддержки и никогда не показывается обратно. Замер выполняется задачей очереди, потому что Google запускает настоящий браузер и отвечает от двадцати секунд до минуты. Какой замер считать "до", модуль не угадывает: каждый записывает, работало ли ускорение в момент съёмки. КАРТИНКИ Анимированные GIF отдаются видео WebM: на 32 реальных анимациях 362 МБ исходников против 30 МБ видео. Анимации конвертируются и в анимированный WebP там, где видео не подходит. Появилась отдельная галочка на объявление главной картинки в head; она выключена по умолчанию и помогает только там, где картинку ставит скрипт или слайдер, собираемый в браузере. Иконки сайта - favicon и семейство apple-touch-icon, android-chrome, mstile, safari-pinned-tab - больше не конвертируются и не подменяются: их адреса читают не только браузеры. Модуль научился узнавать размеры у миниатюр из upload/resize_cache, поэтому такие картинки получают и резерв места, и отложенную загрузку. УСТОЙЧИВОСТЬ Модулю нужен PHP 8.2 - это проверял только установщик. Если после установки версию PHP переключили ниже, любая административная страница сайта, включая страницы чужих модулей, падала с ошибкой разбора, и ровно у тех, у кого есть права на модуль. Теперь версия проверяется и во время выполнения: ниже 8.2 модуль не подключается ядром, не регистрирует обработчик меню и не запускает задачи, а его страницы показывают понятное сообщение с нужной и фактической версией. Сайт при этом работает как без модуля. Структурная проверка страницы научилась учитывать элементы, которые модуль добавляет намеренно: раньше добавленный тег link отбраковывал страницу целиком, и она молча теряла все подстановки. Кеш карт больше не открывает буфер вывода - из-за этого страницы, отвечающие перенаправлением, падали при холодном кеше. Три действия администратора были недоступны из-за отсутствия записи в карте операций; экран "Обзор" больше не требует целостности всего модуля, чтобы о нём отчитаться. |
| 1.0.16 (05.09.2026) | Версия 1.0.16 Собрано от 1.0.13, опубликованной в кабинете. Обновление несёт также изменения 1.0.14 и 1.0.15 и встаёт на любую из них. ЗАМЕРЫ PAGESPEED НА ОБЗОРЕ Вкладка «Обзор» показывает, что говорит лаборатория Google о главной странице до включения ускорения и после: оценка, отрисовка самого крупного элемента, первая отрисовка, время блокировки, сдвиги макета, вес страницы — для телефона и для компьютера. Ключ PageSpeed указывается один раз на вкладке «Настройки»; он хранится отдельно от настроек сайтов, не попадает ни в историю изменений, ни в выгрузку для поддержки и никогда не показывается обратно. Замер выполняется задачей очереди, потому что Google запускает настоящий браузер и отвечает от двадцати секунд до минуты. Какой замер считать «до», модуль не угадывает: каждый записывает, работало ли ускорение в момент съёмки. Стоп-кран теперь пропускает замер и по-прежнему останавливает всё, что меняет сайт, — иначе замер «до» нельзя было бы снять. ОБЪЯВЛЕНИЕ ГЛАВНОЙ КАРТИНКИ Отдельная галочка, по умолчанию выключена: самая крупная картинка первого экрана объявляется в head строкой preload. Помогает только там, где картинку ставит скрипт или слайдер, собираемый в браузере; картинку, написанную в разметке обычным img, браузер и так находит заранее — на демонстрационном стенде разница шести замеров оказалась в пределах погрешности. Подсказка в настройках говорит, как проверить свой случай по отчёту PageSpeed. ИКОНКИ САЙТА НЕ ТРОГАЮТСЯ favicon и семейство apple-touch-icon, android-chrome, mstile, safari-pinned-tab не конвертируются и не подменяются: их адреса читают не только браузеры, а копия WebP для них никому не нужна. ЗАЩИТА ОТ НЕПОДХОДЯЩЕЙ ВЕРСИИ PHP Модулю нужен PHP 8.2 — это проверял только установщик. Если после установки версию PHP переключили ниже (в панели хостинга, у cron-задачи под старым бинарём, при переносе копии сайта), любая административная страница сайта, включая страницы чужих модулей, падала с ошибкой разбора — и ровно у тех, у кого есть права на модуль. Теперь версия проверяется и во время выполнения: на PHP ниже 8.2 модуль не подключается ядром, не регистрирует обработчик меню и не запускает задачи, а его страницы показывают понятное сообщение с нужной и фактической версией. Сайт при этом работает как без модуля. ИСПРАВЛЕНИЯ Структурная проверка страницы научилась учитывать элементы, которые модуль добавляет намеренно; раньше добавленный link отбраковывал страницу целиком, и она молча теряла все подстановки. Сообщения об отказе удалённого сервера называют причину — статус, размер или тип, — а не «политику». Проверка не даёт запустить длинный сетевой запрос с пути, обслуживающего страницу. |
| 1.0.15 (02.09.2026) | СТРАНИЦА БОЛЬШЕ НЕ ПАДАЕТ НА РЕДИРЕКТЕ Кеш, в который модуль складывает сведения о картинках и скриптах страницы, открывал буфер вывода. PHP запрещает открывать буфер внутри обработчика буфера вывода, а модуль попадает в такой обработчик на отдельных путях — например когда страница отвечает перенаправлением: буфер дожимается перед отправкой заголовка Location. Там это не неудачная запись в кеш, а фатальная ошибка: вместо перенаправления посетитель получал пустую страницу с текстом ошибки. |
| 1.0.14 (31.08.2026) | Версия 1.0.14 Собрано от 1.0.13, опубликованной в кабинете. АНИМАЦИИ МОЖНО ОТДАВАТЬ ВИДЕО Самое тяжёлое, что отдаёт большинство сайтов, — анимированные GIF, и ни один формат картинки не отвечает на это хорошо. Замер на 32 реальных анимациях: 362 МБ исходников, 108 МБ в анимированном WebP и 30 МБ в видео WebM. На главной одного из сайтов четыре анимации весили 30,0 МБ и стали 3,0 МБ. Новая галочка «Показывать анимации видео вместо картинки» на экране «Настройки», в группе про картинки. Модуль дополнительно кодирует каждую анимацию в WebM и подставляет её на странице тегом video — без кнопок управления, беззвучно, само запускается и зациклено, так что для посетителя это по-прежнему выглядит как гифка. Исходный тег img остаётся внутри запасным вариантом: браузер, который не умеет video, покажет ровно ту анимацию, что и раньше. Класс и стиль с картинки переносятся на видео, подпись alt становится aria-label. Галочка выключена по умолчанию, и на то две причины. Нужен ffmpeg на сервере — без него ничего не собирается и галочка ничего не делает; наличие ffmpeg и поддержку кодека VP9 показывает экран «Проверка сервера». И это единственная подстановка, которая меняет сам тег: если в вёрстке стили написаны на тег img (например «.баннер img { ширина }»), к видео они не применятся — такие шаблоны стоит проверить глазами. Картинки с srcset и картинки внутри тега picture этот режим не трогает: видео нельзя положить внутрь picture, а один файл не отвечает на набор размеров. Анимации в этих случаях получают обычную обёртку picture с анимированным WebP, как и раньше. На экране «Настройки модуля» появился предел «Сколько времени даётся на кодирование одной анимации» — 45 секунд по умолчанию. Кодировщик никогда не работает дольше, чем задача считается занятой: если два этих числа задать несогласованно, берётся меньшее, потому что кодировщик, переживший свою аренду, — это задача, отданная второму обработчику, и два процесса пишут один файл. Обработчик очереди, который работает прямо в запросе посетителя, видеозадачи не берёт вовсе: у него на всё есть секунда, а кодирование занимает десятки. ИСПРАВЛЕНИЕ, ВАЖНОЕ ПРИ ОТКАТЕ ВЕРСИИ Если в сохранённых настройках оказывался параметр, которого установленная версия модуля не знает, она отвергала настройки целиком — и сайт молча переставал ускоряться. Ни ошибки, ни записи в истории: проверка настроек происходит раньше, чем модуль успевает что-либо записать. Так бывает после отката модуля на версию младше той, что записала настройки. Теперь незнакомый параметр отбрасывается, а всё остальное работает. На экране «Настройки» появляется плашка с перечнем таких параметров и подсказкой сохранить настройки ещё раз — этого достаточно, чтобы список исчез. Сохранение по-прежнему незнакомый параметр не принимает: там ошибку ещё можно исправить. Заодно у настроек, которые версия прочитать не может, появился свой ответ на экране. Раньше это состояние показывалось теми же словами, что и «ничего не включено», и владелец сайта шёл проверять галочки, среди которых искать было нечего. |
| 1.0.13 (29.08.2026) | Версия 1.0.13 Обновление ставится и на 1.0.11, и на 1.0.12: оно несёт изменения обеих версий. АДМИНИСТРАТИВНАЯ ЧАСТЬ ПЕРЕДЕЛАНА ЦЕЛИКОМ Все семь экранов модуля переписаны на единое оформление. Работа модуля на сайте не изменилась ничем: ни одна настройка, ни один сохранённый параметр, ни один этап обработки страниц не тронуты. Что изменилось на экранах: Настройки. Галочки собраны в группы с заголовками; три уточнения, которые раньше жили на отдельном экране, стоят под теми галочками, которые их включают. Вкладка сайта, живущего по общим настройкам, теперь прямо говорит, что менять здесь нельзя и почему, а не показывает экран серых недоступных полей без объяснения. Настройки модуля. Шестнадцать числовых пределов разложены по четырём смысловым группам с подписями, допустимые диапазоны выровнены колонкой. Галочка запуска обработчика очереди по расписанию поднята наверх отдельным блоком: раньше она лежала под всеми числами. Проверка сервера. Сводка разделена на «готовность к работе», «для обращения в поддержку» и «срок хранения копий». Проверка, которая не смогла выполниться, теперь так и написана — до этого в строке была пустая ячейка, читавшаяся как «замечаний нет». Каждый вердикт помечен значком, а не только цветом. Фоновые задачи. Два прогона показаны одинаково, с полосой выполнения. Строка для планировщика cron, правило для nginx, код проверки и отпечаток возможностей сервера получили кнопку «Копировать»: раньше их приходилось выделять мышью через перенос строки. Обзор. Итог работы показан двумя крупными числами. Сообщение о других модулях, меняющих страницы, больше не помечается зелёной галочкой: модуль не может отличить антиспам от конкурирующего ускорителя, поэтому это сведение, а не оценка. История и поддержка. Постраничность добавлена и снизу, широкая таблица прокручивается внутри себя, а не растягивает страницу. Лицензия и демо. Когда демо закончилось, блок покупки становится первым на экране. Пять последствий окончания демо разделены на то, что прекращается, и то, что сохраняется, — одним списком они читались как пять потерь. ИСПРАВЛЕНИЯ Копии WebP теперь доходят до страниц, где шаблон оборачивает каждую картинку в тег picture. Модуль такие картинки не трогал вовсе — и правильно, если автор задал свои варианты через source. Но пустая обёртка без единого source ничего не задаёт, и там копия теперь доходит: браузеру, который сообщил о поддержке формата, адрес подменяется на месте, остальным добавляется source внутрь уже существующего тега, а исходная картинка остаётся запасным вариантом. На проверенной странице так дошли три готовые копии из четырёх. В журнале изменений два события показывались служебными кодами вместо русских названий. ИЗ ВЕРСИИ 1.0.12 Для сайтов с включённым «Композитным сайтом»: ядро прогоняет обработчики страницы второй раз, над той копией, которая ложится в кеш целых страниц, а у модуля стоял признак «работаем один раз за запрос». Из двух копий обрабатывалась ровно одна, и никогда та, которую потом отдают всем посетителям. Замер на клиентском сайте: страница при генерации получала 54 подмены, она же из кеша — ни одной. Теперь модуль различает копии по их содержимому. Экран настроек предупреждает, если «Композитный сайт» включён, и называет три настройки, которые на странице из кеша работать не могут. Учтён конфликт с модулями миниатюр, которые открывают файл по его адресу заново: настройка «отдавать копии всем браузерам» на таких сайтах отходит в сторону, чтобы страница не падала с ошибкой библиотеки GD. Снят экран «Тонкая настройка»: четырнадцать из его пятнадцати полей уже были галочками на экране «Настройки», а три оставшихся перенесены туда же. |
| 1.0.12 (27.08.2026) | Версия 1.0.12 Главное — для сайтов с включённым «Композитным сайтом»: там модуль почти ничего не давал, и теперь это исправлено. Ядро прогоняет обработчики страницы второй раз, над той копией, которая ложится в кеш целых страниц, а у модуля стоял признак «работаем один раз за запрос». Из двух копий обрабатывалась ровно одна, и никогда та, которую потом отдают всем посетителям. Замер на клиентском сайте: страница при генерации получала 54 подмены, она же из кеша — ни одной, и так на каждом обращении. Теперь модуль различает копии по их содержимому: одни и те же байты второй раз не обрабатываются, а другая копия получает свою работу. Экран настроек предупреждает, если «Композитный сайт» включён, и называет три настройки, которые на странице из кеша работать не могут: отдача WebP напрямую, подмена фонов в стилях и подмена адресов ленивой загрузки. Все три зависят от того, что сообщил о себе конкретный браузер, а страница из кеша приходит всем одинаковая, включая браузеры без поддержки WebP. На таких сайтах копии отдаются через тег picture, где оригинал остаётся запасным вариантом. Мы рекомендуем композит отключать. Снят конфликт с модулями миниатюр. Такой модуль берёт адрес картинки и открывает файл заново; получив адрес копии в формате WebP, он падает с ошибкой «imagecopyresampled(): Argument #2 must be of type GdImage, false given», потому что библиотека GD на большинстве хостингов WebP не читает. Теперь настройка «отдавать копии всем браузерам» сама перестаёт применяться, если на сайте установлен модуль такого рода, и экран настроек об этом говорит; копии при этом продолжают доходить до посетителя через разметку страницы, а модуль миниатюр получает исходный файл. Проверяются mystery.thumbs, wd.thumbs, niges.imageresize, aspro.thumbs. Галочку можно не снимать: она заработает снова, если такой модуль удалят. На экране «Проверка сервера» появился раздел о сроке хранения копий у браузера — том самом, на который ругаются отчёты о скорости. Заголовок ставит тот, кто отдаёт файл, а запрос картинки PHP не видит вовсе, поэтому модуль не может задать срок сам — но может подготовить правило. Раздел показывает, записаны ли собственные правила модуля рядом с копиями (год хранения и пометка «неизменяемый», их кладёт установщик), что видит Apache, и печатает готовую строку для nginx с путями вашего сайта. У пункта меню «Тонкая настройка» появилась своя иконка. Закрыты шесть замечаний предрелизного разбора. Правило «в страницу, которая ложится в кеш целых страниц, не попадает ничего, зависящего от конкретного посетителя» не работало: такую страницу узнавали по заголовкам ответа, а страница по пути в кеш их не несёт. Теперь модуль спрашивает у платформы, включён ли кеш вообще. Уборка временных каталогов больше не идёт по символическим ссылкам — на общем хостинге сосед мог оставить ссылку куда угодно. Определитель модулей миниатюр, не сумев обратиться к базе, отвечал «таких нет» и тем самым снимал защиту ровно тогда, когда что-то уже не в порядке; теперь неизвестность читается как «не включать». Проверка сервера открывает только имя самого сайта, взятое у платформы, а не то, что написано в заголовке запроса. Контрольная сумма страницы считается после дешёвых проверок, поэтому сайт с выключенной обработкой ответа больше не платит за неё на каждой странице. Отдельно закрыты восемь замечаний предрелизного разбора. Из них существенное: правило, которое не пускает в сохранённую для всех страницу подмены, зависящие от браузера, на деле не срабатывало — оно спрашивало признаки у самого ответа, а страница по дороге в кеш их не несёт; теперь модуль спрашивает у платформы, включён ли кеш вообще. Уборка временных каталогов больше не идёт по символическим ссылкам. Определение установленных модулей миниатюр при ошибке базы отвечало «таких нет» и снимало защиту — теперь неизвестность и отсутствие различаются. Хеш страницы считается после дешёвых проверок, а не до них. |
| 1.0.11 (26.08.2026) | Версия 1.0.11 Анимированные GIF конвертируются в анимированный WebP. Это формат, которому есть что отдать: проверочный баннер весит 9,62 МБ в GIF и 1,75 МБ в WebP той же анимацией — измерено на клиентском хостинге. Копия остаётся картинкой, поэтому едет тем же путём, что и остальные, и отдаётся через ту же обёртку, а сам GIF остаётся запасным вариантом. Требуется Imagick: только он умеет читать все кадры, поэтому на серверах без него гифки просто пропускаются. Анимации ставятся в очередь последними и не берутся в работу там, где посетитель ждёт ответа. Для них добавлен отдельный фоновый прогон на экране "Очередь" — одна анимация готовится столько же, сколько сотня обычных картинок, и в общем прогоне они мешали бы друг другу. Предел размера исходного файла по умолчанию поднят с 8 до 12 МБ: именно он отсекал такие баннеры. Появилась галочка "Отдавать WebP напрямую, без обёртки picture". Обычная доставка оборачивает картинку в тег picture, чтобы браузер без поддержки формата получил оригинал, но при этом картинка становится на уровень глубже в разметке — и на некоторых шаблонах перестают работать стили вида ".карточка > img" и скрипты галерей и слайдеров, которые ищут картинку через родителя. С галочкой адрес копии подставляется прямо в src, разметка не меняется вовсе. Фоны в стилях отдавались напрямую всегда, поэтому включённая галочка приводит к общему виду всю отдачу. Копия предлагается только браузерам, заявившим поддержку формата. Исправлено: подстановка фона могла испортить разметку. Если адрес в стиле был записан с экранированными кавычками, после подстановки они возвращались настоящими и обрывали атрибут — элемент терял фон. Теперь значение кодируется обратно, а результат сверяется с задуманным на готовой странице. Исправлено: подготовка копий могла оборвать страницу. Пределы в настройках противоречили друг другу — картинка в 40 мегапикселей требует больше памяти, чем модулю разрешено занимать, а нехватка памяти обрывает страницу целиком. Теперь потребность считается до начала работы и сверяется с тем, что процессу действительно доступно. Исправлено: после правки файла скрипта сайт продолжал отдавать старую сжатую копию. Копия выбиралась по адресу файла, а не по его содержимому, поэтому исправленный скрипт никогда не пересобирался. Теперь размер и время файла решают, годится ли копия, и правка приводит к пересборке. Исправлено: подменялись адреса скриптов самого Битрикса. Это ломало штатное правило ядра "один адрес — одна загрузка" при подгрузке компонентов и оставляло устаревшие копии служебных сборок. Теперь такие файлы не трогаются. Исправлено: на экране настроек модуля часть числовых пределов была шире рабочих. Можно было указать, например, 50 задач за один проход фонового агента, хотя берётся не больше десяти, — число сохранялось и молча урезалось. Теперь верхние границы на экране совпадают с теми, что модуль действительно соблюдает, а значение, сохранённое прежней версией выше новой границы, показывается уже в допустимых пределах. Укрепление по итогам предрелизной проверки. Анимация собирается во временном каталоге, имя которого нельзя предсказать со стороны, — на общем хостинге это защищает от подмены файла соседом по серверу. Проверка "поместятся ли кадры" больше не отключается на серверах, где у ImageMagick не выставлены пределы: раньше именно там специально подготовленный GIF мог занять сервер надолго. Кроме того, GIF читается не целиком, а в пределах разрешённого размера, и нестандартное значение memory_limit больше не приводит к ошибке в середине конвертации. Большие каталоги обрабатываются во много раз быстрее. Очередь пополнял только фоновый агент — не больше десяти задач в минуту и лишь пока на сайте кто-то есть, — поэтому CLI-воркер, способный на сотню за проход, простаивал за очередью, которая наполнялась десятью. Теперь очередь пополняет тот, кто её разгребает, и воркер берёт настройки сайта, а не собственные умолчания. На экране "Очередь" появился блок "Прогон по расписанию" с готовой строкой для планировщика: с путями вашего сайта и тем PHP, на котором сайт работает. Строку можно запускать в несколько потоков — задача достаётся ровно одному. Замер: 25 картинок за 3,8 секунды одним потоком против трёх в минуту у агента. Исправлено: прогон по каталогу не мог переделать то, от чего однажды отказались. Очередь при повторной постановке возвращала уже существующую задачу в любом состоянии, включая завершённую впустую, — поэтому прогон шагал по каталогу, отчитывался и не ставил ничего. Установка Imagick, поднятие предела размера или перезапуск прогона не помогали никогда. Теперь завершённая задача для файла без копии возвращается в работу. Исправлено: длинную конвертацию отбирали у того, кто её делал. Аренда задачи длилась минуту, а конвертация большой анимации идёт дольше, и уборщик зависших задач передавал её другому — работа выбрасывалась и начиналась заново, три раза, после чего файл считался неконвертируемым. Аренда теперь переживает весь проход. Исправлено: анимации не записывались на хостинге, где сайт заперт в своём каталоге (open_basedir). Системный временный каталог там недоступен, а копия писалась именно туда. Теперь запись идёт во временную папку самой CMS внутри сайта. Исправлено: картинки с пробелами и кириллицей в имени не оптимизировались вовсе. Адрес приходит в закодированном виде, а на диске имя обычное — файл искали под именем, которого нет, и промах выглядел как попытка выйти за пределы сайта. Исправлено: сервер с настроенной ImageMagick больше не занижается модулем. Прежде модуль опускал её пределы до своих, и на сервере, где разрешён гигабайт памяти, это загружало дисковый слой вместо того, чтобы разгрузить его: анимация на 204 кадра упиралась в предел диска. Свои числа модуль теперь ставит только там, где у сборки нет никаких, и умеет их поднять; упёршись в чужой потолок, он отказывается один раз и называет цифры. Исправлено: прогресс прогона считал не то. Оба прогона читали все картинки подряд, а "всего" считалось только по своему виду — сайт с сорока анимациями среди пятисот картинок показывал "116 из 40" и продолжал расти, что выглядит как зависший прогон. Исправлено: анимации оставались без копий при включённой галочке прямой отдачи. Логика исключала их целиком — у GIF в этом режиме не остаётся запасного варианта, — и копии строились, но не доходили ни до кого. Теперь обычные картинки идут прямо в src, а анимации получают обёртку picture: она появляется только вокруг них. Предел размера копии по умолчанию поднят с 8 до 12 МБ — до того же значения, что и предел исходника. Копия и так сохраняется только если она меньше оригинала, поэтому отдельный меньший предел отбрасывал уже сделанную работу. Мелкое: версия модуля на экранах теперь берётся из работающего кода, а не из записи установщика, которая после обновления оставалась прежней; воркер, опустошивший очередь, так и пишет, а не сообщает об упоре в лимит. Исправлено: атрибуты, записанные одинарными кавычками или без кавычек, читались как пустые. Такие картинки и скрипты модуль просто не видел — не сжимал, не откладывал, не измерял. Ничего при этом не ломалось, поэтому и не бросалось в глаза: на шаблоне, свёрстанном так, модуль молча не делал ничего. На экране настроек появилась галочка «Обработчик очереди по расписанию». Раньше экран «Очередь» показывал строку для планировщика и сообщал, что нужно включить обработчик, а включить его было негде. |
| 1.0.10 (23.08.2026) | Версия 1.0.10 Анимированные GIF конвертируются в анимированный WebP. Это формат, которому есть что отдать: проверочный баннер весит 9,62 МБ в GIF и 1,75 МБ в WebP той же анимацией — измерено на клиентском хостинге. Копия остаётся картинкой, поэтому едет тем же путём, что и остальные, и отдаётся через ту же обёртку, а сам GIF остаётся запасным вариантом. Требуется Imagick: только он умеет читать все кадры, поэтому на серверах без него гифки просто пропускаются. Анимации ставятся в очередь последними и не берутся в работу там, где посетитель ждёт ответа. Для них добавлен отдельный фоновый прогон на экране "Очередь" — одна анимация готовится столько же, сколько сотня обычных картинок, и в общем прогоне они мешали бы друг другу. Предел размера исходного файла по умолчанию поднят с 8 до 12 МБ: именно он отсекал такие баннеры. Появилась галочка "Отдавать WebP напрямую, без обёртки picture". Обычная доставка оборачивает картинку в тег picture, чтобы браузер без поддержки формата получил оригинал, но при этом картинка становится на уровень глубже в разметке — и на некоторых шаблонах перестают работать стили вида ".карточка > img" и скрипты галерей и слайдеров, которые ищут картинку через родителя. С галочкой адрес копии подставляется прямо в src, разметка не меняется вовсе. Фоны в стилях отдавались напрямую всегда, поэтому включённая галочка приводит к общему виду всю отдачу. Копия предлагается только браузерам, заявившим поддержку формата. Исправлено: подстановка фона могла испортить разметку. Если адрес в стиле был записан с экранированными кавычками, после подстановки они возвращались настоящими и обрывали атрибут — элемент терял фон. Теперь значение кодируется обратно, а результат сверяется с задуманным на готовой странице. Исправлено: подготовка копий могла оборвать страницу. Пределы в настройках противоречили друг другу — картинка в 40 мегапикселей требует больше памяти, чем модулю разрешено занимать, а нехватка памяти обрывает страницу целиком. Теперь потребность считается до начала работы и сверяется с тем, что процессу действительно доступно. Исправлено: после правки файла скрипта сайт продолжал отдавать старую сжатую копию. Копия выбиралась по адресу файла, а не по его содержимому, поэтому исправленный скрипт никогда не пересобирался. Теперь размер и время файла решают, годится ли копия, и правка приводит к пересборке. Исправлено: подменялись адреса скриптов самого Битрикса. Это ломало штатное правило ядра "один адрес — одна загрузка" при подгрузке компонентов и оставляло устаревшие копии служебных сборок. Теперь такие файлы не трогаются. Исправлено: на экране настроек модуля часть числовых пределов была шире рабочих. Можно было указать, например, 50 задач за один проход фонового агента, хотя берётся не больше десяти, — число сохранялось и молча урезалось. Теперь верхние границы на экране совпадают с теми, что модуль действительно соблюдает, а значение, сохранённое прежней версией выше новой границы, показывается уже в допустимых пределах. Укрепление по итогам предрелизной проверки. Анимация собирается во временном каталоге, имя которого нельзя предсказать со стороны, — на общем хостинге это защищает от подмены файла соседом по серверу. Проверка "поместятся ли кадры" больше не отключается на серверах, где у ImageMagick не выставлены пределы: раньше именно там специально подготовленный GIF мог занять сервер надолго. Кроме того, GIF читается не целиком, а в пределах разрешённого размера, и нестандартное значение memory_limit больше не приводит к ошибке в середине конвертации. |
| 1.0.9 (10.08.2026) | Версия 1.0.9 Исправлена ошибка, из-за которой могла не открываться страница заказа в личном кабинете (TypeError в обработчике OnAfterResizeImage). Ядро Битрикса передаёт обработчикам событий аргументы в том виде, в каком их дал вызывающий код: штатный компонент деталей заказа вызывает уменьшение картинки так, что вместо данных колбэка приходит null, а вместо размеров - false, и обработчик со строгими типами падал до первой своей строки, роняя страницу. Ошибка проявлялась при включённой настройке "Готовить копии при загрузке файлов". Исправлены все пять обработчиков событий ядра, а не только упавший: ни один больше не объявляет типы аргументов, каждый проверяет пришедшее сам и на неожиданном вводе молча не делает ничего. Отдельная проверка в наборе тестов запрещает возвращение строгих типов в обработчики. Рекомендуем установить это обновление не откладывая. |
| 1.0.8 (09.08.2026) | Версия 1.0.8 Открытие страницы готовит всю страницу. Раньше за один показ в очередь подготовки попадали три картинки - в расчёте на то, что следующий просмотр продолжит. На странице каталога картинок тридцать-шестьдесят, а на сайте без трафика следующего просмотра не бывает, и это выглядело как "конвертация не работает". Теперь один показ ставит в очередь все недостающие картинки страницы, а сразу после отдачи страницы готовится до двадцати из них - посетитель уже получил страницу и ничего не ждёт. Шире стала только постановка в очередь; сама конвертация ограничена теми же рамками, что и раньше, а на серверах, где работа идёт до ответа, не изменилось ничего. Новый раздел "Тонкая настройка" - для тех, кому связки экрана "Настройки" слишком крупные. Там одна галочка включает несколько связанных вещей сразу; здесь те же вещи включаются по отдельности - например, копии картинок без очереди при загрузке файлов. Те же вкладки по сайтам, то же сохранение в одно действие, та же кнопка отмены. Показано только то, что реально влияет на страницы, каждая настройка подписана обычными словами. Обычное сохранение больше не сбрасывает значения, заданные по отдельности: связки записываются поверх сохранённого, а не поверх заводских значений. Если значения заданы тонко и не совпадают со связками, экран "Настройки" предупреждает об этом до сохранения. Поле "Сколько первых картинок грузить сразу" больше не предлагает значения меньше 2: модуль и раньше не опускался ниже - главная картинка страницы откладываться не должна, - но экран обещал ноль зря. |
| 1.0.7 (09.08.2026) | Версия 1.0.7 Исправлено главное: модуль больше никогда не откладывает главную картинку страницы. Счёт "сколько первых картинок грузить сразу" тратился на служебные изображения - логотип и иконки мессенджеров в шапке, - и на проверенной витрине весь запас уходил на них ещё до первой настоящей картинки. Баннер первого экрана получал отложенную загрузку, а именно по нему браузер меряет скорость появления страницы; отсюда же была и заметная часть сдвига вёрстки. Теперь служебное - векторные файлы и всё, что называется логотипом, иконкой, спрайтом - запас не тратит: откладывание начинается после тех картинок, которые имеет в виду владелец. Пометку "самая важная картинка страницы" теперь тоже получает первая содержательная картинка, а не позиция, которую всегда занимал логотип. Пять чисел подготовки при открытии страницы вынесены на экран технических ограничений: как часто она запускается, сколько картинок и секунд ей отведено до ответа и после него. Раньше они существовали только внутри модуля, и на большом каталоге их не из чего было поднять. Из интерфейса убрано слово "профиль". Внутри модуль по-прежнему хранит настройки версиями - это то, что делает изменения обратимыми, - но экран, который назывался профилями, ушёл ещё в прошлой версии, а тексты отстали: журнал действий писал "создан профиль", лицензия обещала "публикацию профилей", а настройки модуля отправляли в раздел, которого больше нет. Теперь везде обычные слова: настройки созданы, настройки применены, настройки сайта удалены. |
| 1.0.6 (07.08.2026) | Версия 1.0.6 Исправлено главное: картинки открытой страницы готовятся первыми. Очередь разбиралась в порядке поступления, а массовый прогон успевает поставить в неё все файлы сайта - на проверенной витрине 2 487 штук. Посетитель открывал страницу, её картинки вставали за ними, и подготовка при показе страницы честно работала, но над файлами со страниц, на которые никто не смотрит. Со стороны это выглядит как "конвертация на лету не работает". Теперь порядок задаёт то, кто ждёт: картинка показываемой страницы, затем всё остальное, и в самом конце массовый прогон - он существует, чтобы занимать ничьё время, и перед посетителем встать не может. За один показ страницы готовится столько картинок, сколько успевает за отведённую секунду, а не одна. Секунда и была настоящим ограничением, поэтому она не изменилась. Настройки стали проще ещё раз: экран профилей убран. Настройки задаются вкладками - все сайты или один из них, - а профили, приоритеты, шаблоны адресов, черновики и версии были вторым способом задать то же самое, только на языке разработчика. Именно так галочка и оказывается в профиле, который к сайту не применяется. Внутри всё осталось: настройки по-прежнему хранятся версиями, и последнее изменение можно отменить. Если на сайте есть набор настроек, сделанный прежней версией модуля, и он важнее вкладки - экран настроек об этом говорит и предлагает его выключить. Убраны технические подписи. На прежнем экране настройка без своего описания показывалась одним лишь внутренним именем вроде image.webp - понять по такой строке, что делает галочка, было нельзя. Теперь у каждой настройки название и пояснение обычными словами. |
| 1.0.5 (07.08.2026) | Версия 1.0.5 Настройки стали проще. Раньше их приходилось задавать через профили: у каждого свой код сайта, приоритет, шаблоны адресов, черновики и список версий, которые надо публиковать по одной. Всё это осталось внутри - на нём держится возможность откатиться, - но с экрана ушло. Теперь на экране настроек вкладки: "Все сайты" и по вкладке на каждый сайт. Сайт работает по общим настройкам, пока не нажать "Настроить отдельно" - тогда его настройки заводятся копией того, что этому сайту отдаётся сейчас, и дальше меняются, не задевая остальные сайты. Кнопка "Вернуть общие настройки" убирает их обратно. Вместо списка версий одна кнопка "Отменить последнее изменение". Исправлено, и это главное в версии: на сайтах с несколькими площадками настройки могли сохраняться в профиль, который ни на один запрос не отвечал. Экран выбирал профиль по первому активному сайту в порядке сортировки, а посетителям отвечал другой. Галочка при этом сохранялась, публиковалась и была видна на экране - но на сайте не работала. Теперь чтение и запись идут в один и тот же профиль, а экран прямо называет тот, который показывает. Исправлено: проверка сервера сообщала о включённом композитном кеше на сайтах, где он выключен. Читался признак режима кеша, а он остаётся в настройках навсегда после выключения. Теперь состояние спрашивается у платформы. Профили можно удалять. Кнопка появляется у выключенного профиля; последний профиль удалить нельзя. Версии настроек удаляются вместе с ним, запись об удалении остаётся в журнале действий. Экран профилей никуда не делся и остался в разделе для специалистов - для того, чего вкладки намеренно не умеют: профиль на раздел сайта, отдельные настройки для авторизованных посетителей, перенос настроек между сайтами. |
| 1.0.4 (07.08.2026) | Версия 1.0.4 Подготовка копий при открытии страницы. Раньше картинки готовил только фоновый агент - несколько штук в минуту, и на большом каталоге это дни. Теперь часть той же работы делается в момент показа страницы, поэтому картинки открытой страницы готовы за секунды. Кто платит за это временем, зависит от сервера, и модуль это определяет сам: если сервер умеет отдать страницу и продолжить работу (php-fpm, LiteSpeed) - не платит никто. На остальных работа идёт до ответа, поэтому там строгие рамки: одна картинка, не дольше секунды и не на каждом запросе. Что умеет ваш сервер, написано на экране "Проверка сервера". Возможность выключена по умолчанию, включается отдельной галкой. Исправлено: модуль сам создавал сдвиг вёрстки. Отложенная загрузка вешалась и на картинки, размер которых неизвестен, - место под них не резервировалось, и страница дёргалась при догрузке. На проверенной витрине из 42 отложенных картинок 21 была без размеров, и CLS вырос с 0 до 0,31. Теперь откладывание требует известного размера. Исправлено: модуль не знал размеров собственных копий. При подмене адреса файла в разметку попадает уже наш webp, и размер искался там, где его нет. Теперь берётся из данных о самой копии - сдвиг уходит, а такие картинки снова можно откладывать. Исправлено: массовый прогон не двигался на посещаемом сайте. Он ограничивался длиной всей очереди, а её наполняет обычный трафик, поэтому прогон всегда получал отказ. Теперь за один шаг он добавляет не больше, чем фоновый работник успевает разобрать. Исправлено: на серверах, где Imagick терял прозрачность, картинка не отдавалась вовсе. Теперь она пересобирается без потерь, как это уже делалось на GD. |
| 1.0.3 (06.08.2026) | Версия 1.0.3 Массовая подготовка копий. Раньше очередь наполнялась только просмотрами: открыли страницу - модуль заказал три картинки с неё. Так он успевает за новыми файлами, но не догоняет накопленное, а до картинок с редко посещаемых страниц не доходит вовсе. На витрине в 3 879 картинок это 43 часа работы агента ради шести минут собственно конвертации. Теперь на экране "Фоновые задачи" есть прогон по всем файлам сайта: идёт в фоне, продолжается с места остановки, пополняет очередь небольшими порциями и пропускает то, для чего копия уже собрана. Проверка сервера предупреждает о композитном кеше Битрикса. Композит забирает копию страницы раньше, чем модуль её меняет, поэтому в сохранённых страницах нет ни отложенной загрузки, ни размеров картинок, ни ссылок на подготовленные копии. Изменения видит только тот посетитель, чей запрос прошёл мимо кеша. Пока композит включён, из всего, что делает модуль, до посетителя доходит лишь подмена адреса файла. |
| 1.0.2 (06.08.2026) | Версия 1.0.2 Профиль ускорения теперь создаётся при установке: он действует на всех сайтах, уступает любому вашему профилю и ничего не делает, пока в нём не отметят нужное. Раньше до создания профиля вручную ни одна настройка не сохранялась. Профиль можно написать сразу на все сайты, а сам сайт выбирается из списка, а не вводится кодом. Исправлено: при совпадении нескольких профилей действовал тот, у которого число приоритета больше, хотя интерфейс всегда обещал обратное. Профиль, созданный при установке, из-за этого перекрывал профили, сделанные вручную. Профиль можно выключить и включить обратно. Раньше публикация включала профиль, а выключить его было нечем. Экран профилей приведён в порядок: три поля вместо шести, редкие настройки свёрнуты, создание профиля сразу открывает его на настройку, в списке видно, где профиль действует и какой из них главнее. Исправлено: очередь подготовки картинок вставала. Копия, которая экономит меньше десятой части, не отдаётся посетителю - и при этом считалась неготовой, поэтому одни и те же мелкие файлы занимали весь лимит на каждом ответе. На проверенной витрине три миниатюры по 1-2 КБ не давали попасть в очередь сорока другим картинкам, включая файл на 1,4 МБ. |
Требования
Для работы модуля необходимы:
PHP 8.2 или новее;
1С-Битрикс версии 23.900.1000 или новее;
право на запись в каталог /upload;
GD или Imagick для создания WebP-копий.
Для дополнительных возможностей:
Imagick — для обработки анимированных GIF;
ffmpeg с поддержкой VP9 — для преобразования анимаций в WebM.
Если версия PHP или 1С-Битрикс ниже требуемой, установка будет остановлена. Отсутствие Imagick или ffmpeg не мешает работе остальных функций.
Первый запускПосле установки:
Откройте раздел Ускорение сайта → Проверка сервера.
Убедитесь, что модуль может записывать файлы в /upload и видит GD или Imagick.
Перейдите в раздел Настройки и включите модуль.
Для начала включите Ускорять картинки и Загружать картинки по мере прокрутки.
Откройте раздел Фоновые задачи и проверьте, как создаются оптимизированные копии.
Модуль начинает обработку постепенно. Когда изображение впервые появляется на странице, для него создаётся задача. Фоновый агент обрабатывает очередь раз в минуту.
На сайтах с большим количеством файлов рекомендуется настроить запуск обработчика по расписанию. Готовую команду для cron можно скопировать в разделе Фоновые задачи.
ВажноМодуль не изменяет исходные изображения, стили и скрипты. Все облегчённые версии хранятся отдельно. Если отключить модуль или отдельную функцию, сайт сразу продолжит работать с исходными файлами.
Преобразование GIF в WebM выключено по умолчанию. Перед его включением проверьте наличие ffmpeg и работу анимаций в шаблоне сайта.
Почта для связи: marketplace@topman.dev
TG для связи: https://t.me/digitaltopman
Время ответа - 2 рабочих дня.