Перейти к содержанию

Оптимизация изображений

Модуль Telecart использует изображения ваших товаров из существующего каталога OpenCart. Поскольку Telecart является витриной для уже созданных товаров, все изображения подтягиваются напрямую из OpenCart. Однако, чтобы обеспечить высокую скорость загрузки магазина внутри Telegram, Telecart применяет собственные улучшенные алгоритмы оптимизации.

Как работает обработка изображений

OpenCart изначально обрабатывает изображения «на лету»: при первом запросе создаётся уменьшенная копия нужного размера, она сохраняется в кэш, а затем используется повторно. Это повышает производительность и снижает нагрузку.

Telecart использует тот же принцип, но с несколькими важными улучшениями:

  1. Использование современных форматов (WebP) Telecart перекодирует изображения в формат WebP — более современный и компактный по сравнению с JPEG и PNG. Это позволяет:

    • значительно уменьшить вес изображений,
    • ускорить загрузку страниц в Telegram,
    • сохранить визуальное качество без заметных потерь.
  2. Автоматическое изменение размера Модуль автоматически подстраивает размеры изображений под интерфейс Telegram, чтобы не тратить трафик на загрузку слишком больших файлов.

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

Где могут быть проблемы

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

  • если у товара много изображений,
  • если на странице выводится большая галерея,
  • если сервер работает на слабом железе.

Причина проста: при первом запросе изображения сервер должен его обработать, сжать, перекодировать в WebP и сохранить в кэш. Если таких изображений десятки или сотни, пользователь может увидеть задержки при загрузке страницы.

Но это происходит только первый раз. После создания кэшированной копии всё работает быстро.

Зачем нужен «прогрев» кэша изображений

Чтобы избежать ситуации, когда кэш создаётся «в моменте» и замедляет открытие страниц для реальных пользователей, лучше прогреть его заранее — ещё до запуска магазина или сразу после импорта товаров.

Это единственный правильный подход, если:

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

Прогрев кеша через TeleCart CLI

Прогреть кеш можно выполнив команду images:warmup через консольную утилиту TeleCart CLI. Эта команда позволяет заранее обработать все изображения и подготовить изображения в нужных размерах и форматах.

  • перебирает все товары и их изображения,
  • генерирует версии в WebP формате,
  • записывает их в отдельную директорию на диск,
  • позволяет пользователям работать с магазином без «лагов» на первой загрузке.

После выполнения прогрева Telecart начинает работать максимально быстро — все изображения уже готовы, и пользователи видят страницы мгновенно.

Пример запуска команды:

php ./system/library/oc_telegram_shop/cli.php images:warmup

Утилита выведет всю важную информацию на экран и начнёт процесс прогрева кеша. Процесс может занять продолжительное время, закрывать терминал до окончания выполнения нельзя.

Повторный запуск скрипта

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

  • не трогает изображения, которые уже были обработаны ранее,
  • обрабатывает только новые или изменённые изображения.

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

Автоматизация прогрева кэша

Если изображения в вашем магазине появляются или меняются регулярно, рекомендуется автоматизировать запуск утилиты. Это позволит держать кэш всегда актуальным, а Telegram-магазин — быстрым.

Есть два основных варианта:

  1. Автоматический запуск через CRON. Почти любой хостинг предоставляет возможность создать cron-задачу. Вы можете настроить, например запуск раз в день или запуск ночью, когда сервер менее загружен покупателями. Cron будет выполнять скрипт в фоне, без вашего участия.

  2. Запуск по событию (например после импорта товаров). Если у вас есть автоматический импорт из 1С, ERP, маркетплейсов, XML/CSV, или вы периодически обновляете каталог вручную — скрипт можно запускать сразу после завершения этих процессов. Это может сделать ваш разработчик — он добавит вызов команды в скрипт импорта или любое другое место, где завершается обновление каталога.

Такие подходы гарантируют, что новые изображения попадут в кэш сразу после появления, и пользователи не увидят задержек при первой загрузке.

Очистка кеша изображений

Могут возникнуть случаи, когда кэш изображений нужно перегенерировать с нуля. Для этого есть два варианта.

  1. Удалить изображения вручную. Telecart складывает кеш изображений в директорию images/cache/telecart, туда же, где хранится кеш OpenCart, только в отдельную директорию telecart.
  2. Запустить команду php ./system/library/oc_telegram_shop/cli.php images:cache-clear. Это команда выведет информацию о том, что будет удалено, необходимо будет ввести yes для подтверждения и начнётся процесс удаления.

После удаления, можно запустить прогрев кеша заново.