Оптимізація продуктивності 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 днів залежно від складності. Вартість розраховується індивідуально після аудиту. Зв'яжіться з нами — ми підберемо оптимальне рішення під ваш бюджет.







