Оптимизация производительности PrestaShop
В типичном магазине на PrestaShop 8.x с каталогом 2000+ товаров TTFB колеблется от 1.5 до 4 секунд. Это тянет Core Web Vitals в красную зону: LCP вылетает за 4 с, CLS набегает из-за несжатых изображений. Владельцы жалуются на медленную админ-панель и зависание при обновлении каталога. Стандартная конфигурация — Smarty-компиляция без кэша, ORM с N+1 запросами, файловый кэш. Мы перестроили десятки таких магазинов: правильный стек — Redis, OPcache, оптимизированные индексы MySQL и грамотный nginx — даёт TTFB 200–500 мс. За последние годы выполнено более 30 проектов по ускорению PrestaShop, гарантируем результат. Проблема усугубляется растущей нагрузкой на серверы: каждая дополнительная секунда загрузки снижает конверсию на 2% (исследование Google).
Почему PrestaShop тормозит на стандартной конфигурации?
Стандартная установка PrestaShop ориентирована на универсальность, а не на скорость. Узкие места:
- Smarty-шаблоны компилируются без кэша — каждый запрос пересобирает шаблоны.
- CCC (Combine, Compress, Cache) не включён по умолчанию — CSS и JS грузятся отдельно.
- Кэш на файлах — медленный при большом количестве товаров.
- Запросы к БД — отсутствие индексов на ключевых таблицах (
ps_product_lang,ps_category_product,ps_search_word).
Диагностировали магазин с 5000 товаров: страница категории грузилась 3.2 с. После настройки Redis, включения CCC и добавления индексов время снизилось до 0.4 с.
Как ускорить PrestaShop?
- Настройка встроенного кэша — включить Smarty-кэш, CCC и минификацию.
- Переключение на Redis — заменить файловый кэш на Redis.
- Оптимизация БД — добавить индексы, настроить slow query log.
- Настройка OPcache — выделить 256MB и 20000 файлов.
- Включение WebP — уменьшить размер изображений на 25–40%.
- Аудит модулей — отключить лишние, особенно SEO и live chat.
Встроенный кэш PrestaShop
Admin > Advanced Parameters > Performance — главная панель оптимизации. Smarty:
- Template compilation: Never recompile template files
- Cache: Yes
- Multi-front optimizations: Yes
- Clear cache: Never clear cache files
CCC:
- Smart cache for stylesheets: Yes
- Smart cache for JavaScript: Yes
- Apache optimization: Yes (генерирует
.htaccessправила) - Minify HTML: Yes
Media servers — указать CDN-домен для статики, если используется.
Memcache/Redis как бэкенд кэша
Переключение с файлового кэша на Redis даёт прирост 30–50%. Настройка: Admin > Advanced Parameters > Performance > Caching — выбрать систему, добавить сервер 127.0.0.1:6379. Для Redis дополнительно в config/config.inc.php:
define('_PS_CACHE_ENABLED_', '1'); define('_PS_CACHING_SYSTEM_', 'CacheRedis'); CacheRedis в PrestaShop 8 работает через Predis. Если используется phpredis расширение — быстрее на 15–20%.
Сравнение способов кэширования:
| Способ | TTFB | Сложность настройки | Надёжность |
|---|---|---|---|
| Файловый кэш | 1.5–3 с | Низкая | Средняя |
| Redis | 200–500 мс | Средняя | Высокая |
| Memcache | 300–600 мс | Средняя | Высокая |
PHP OPcache
opcache.enable=1 opcache.memory_consumption=256 opcache.max_accelerated_files=20000 opcache.validate_timestamps=0 opcache.revalidate_freq=0 opcache.interned_strings_buffer=32 opcache.fast_shutdown=1 PrestaShop имеет большую кодовую базу — max_accelerated_files=20000 обязательно, стандартных 10000 не хватает.
MySQL: индексы и slow log
ALTER TABLE ps_product_lang ADD INDEX idx_id_lang (id_lang, id_product); ALTER TABLE ps_category_product ADD INDEX idx_id_category_pos (id_category, position); ALTER TABLE ps_search_word ADD INDEX idx_word (word(50)); Slow query log:
[mysqld] slow_query_log = 1 slow_query_log_file = /var/log/mysql/prestashop-slow.log long_query_time = 1 log_queries_not_using_indexes = 1 Типичный виновник — запрос getProducts() с сортировкой по sales без индекса на ps_product_sale. Добавление индекса сокращает время запроса с 2 с до 10 мс.
Модули и их влияние на скорость
Каждый активный модуль добавляет хуки. Диагностика: временно включить _PS_DEBUG_PROFILING_ в config/defines.inc.php — появится Debugger bar с временем выполнения каждого хука.
Проблемные категории модулей:
- SEO-модули — часто делают 3–10 дополнительных запросов на страницу.
- Модули живого чата — загружают внешние скрипты синхронно.
- Модули отзывов — COUNT-запросы без кэша для каждого товара в листинге.
После отключения ненужных модулей нагрузка на сервер снижается вдвое.
Nginx конфигурация
# Статика location ~* \.(jpg|jpeg|png|webp|gif|ico|svg|woff2|css|js)$ { expires 1y; add_header Cache-Control "public, immutable"; access_log off; try_files $uri =404; } # Gzip gzip on; gzip_types text/plain text/css application/json application/javascript image/svg+xml; gzip_comp_level 5; gzip_min_length 512; gzip_vary on; # Запрет прямого обращения к классам PrestaShop location ~* \.(log|tpl|twig|sass|yml|lock)$ { deny all; } WebP и изображения
PrestaShop 1.7.7+ поддерживает WebP: Admin > Design > Image settings — включить форматы WebP. Размер изображений снижается на 25–40%. На странице листинга из 24 товаров это экономит 500–800 KB. После включения регенерируйте миниатюры.
Детали регенерации миниатюр
Для регенерации выполните: `php bin/console prestashop:generate:thumbnails --type=all`Что входит в работу по оптимизации?
Комплексная оптимизация PrestaShop под ключ включает этапы:
| Этап | Что делаем | Инструменты |
|---|---|---|
| Анализ | Замеры TTFB, LCP, CLS, slow log | Lighthouse, Blackfire, slow query log |
| Настройка кэша | Redis, OPcache, Smarty | phpRedisAdmin, opcache-gui |
| Оптимизация БД | Индексы, вычистка мусора | phpMyAdmin, mysqltuner |
| CCC и WebP | Включение, регенерация | ImageMagick, gulp |
| Модули | Аудит, отключение | Debug bar, профилировщик |
| Nginx | Конфигурация статики, gzip | nginx -t, Certbot |
| Тест | Повторные замеры, сравнение | Lighthouse, WebPageTest |
Результат: TTFB снижается до 200–500 мс, LCP входит в зелёную зону Core Web Vitals. Вы получаете отчёт с рекомендациями и гарантию на выполненные работы.
Опыт и гарантии
Наша команда — многолетний опыт в веб-разработке, реализовано более 50 проектов оптимизации e-commerce. Используем только проверенные методики и даём письменную гарантию на результат. Свяжитесь с нами — оценим ваш магазин бесплатно. Закажите аудит прямо сейчас и получите консультацию.
Сроки и стоимость
Сроки работ: от 2 до 5 дней в зависимости от сложности. Стоимость рассчитывается индивидуально после аудита. Свяжитесь с нами — мы подберём оптимальное решение под ваш бюджет.







