Оптимізація продуктивності PrestaShop

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Оптимізація продуктивності PrestaShop
Середня
~2-3 робочих дні
Часті питання

Наші компетенції:

Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Оптимізація продуктивності PrestaShop

PrestaShop 8.x на стандартній конфігурації дає TTFB 1.5–4 секунди на каталозі з 2000+ товарами. Причини: компіляція шаблонів Smarty без кеша, ORM з надмірними JOIN-запитами, вбудований файловий кеш. Оптимізація дає TTFB 200–500ms при правильному стеку.

Вбудований кеш PrestaShop

Admin > Advanced Parameters > Performance — головна панель оптимізації.

Smarty:

  • Template compilation: Never recompile template files (не на dev)
  • Cache: Yes
  • Multi-front optimizations: Yes
  • Clear cache: Never clear cache files

CCC (Combine, Compress, Cache):

  • Smart cache for stylesheets: Yes
  • Smart cache for JavaScript: Yes
  • Apache optimization: Yes (генерує .htaccess правила)
  • Minify HTML: Yes

Media servers — вказати CDN-домен для статики, якщо використовується.

Memcache/Redis як бекенд кеша

За замовчуванням PrestaShop кешує у файли. Перемикання на Memcache або Redis через Admin > Advanced Parameters > Performance > Caching:

  • Caching system: Memcache або Redis
  • Add server: 127.0.0.1:6379

Для Redis додатково в config/config.inc.php (якщо версія не підтримує Redis через UI):

define('_PS_CACHE_ENABLED_', '1');
define('_PS_CACHING_SYSTEM_', 'CacheRedis');

Клас CacheRedis в PrestaShop 8 працює через Predis. Якщо використовується розширення phpredis — швидше на 15–20%.

PHP OPcache

opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0    ; production
opcache.revalidate_freq=0
opcache.interned_strings_buffer=32
opcache.fast_shutdown=1

PrestaShop має велику кодову базу — max_accelerated_files=20000 необхідно, стандартних 10000 не вистачає.

MySQL: індекси та slow log

-- Частові запити PrestaShop без оптимального індексу
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

Типовий винуватець у slow log — запит getProducts() з сортуванням за sales без індексу на ps_product_sale.

Модулі та їхній вплив на швидкість

Кожен активний модуль PrestaShop додає хуки до життєвого циклу сторінки. Діагностика:

// config/defines.inc.php (тимчасово)
define('_PS_DEBUG_PROFILING_', true);

Після включення у браузері в нижній частині сторінки з'являється 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

Терміни робіт

Налаштування вбудованого кеша, OPcache, PHP-FPM, Redis, nginx: 1–2 дні. Аудит модулів та відключення повільних: 1 день. Включення WebP, регенерація мініатюр, індекси MySQL: 0.5–1 день.