Информация Ускорение и оптимизация престашоп

Напишу все свои наработки по оптимизации престы 1.6.*
Знакомый пожаловался, что магазин с детскими игрушками тормозит. Ситуация многим знакома: страницы загружаются по несколько секунд, рейтинг пейджспид 20-30 единиц. Купленная тема, 6-8к товаров.
Перепробовал много вариантов, кое-что уже отписывал в этом топике, с тех пор от некоторых вещей отказался, некоторые вещи внедрил.
Итак, на текущий момент имеем:
1) VPS на SSD, пустой Debian 8, тариф Aurum на ihor.ru.
Ресурсов взяли с запасом, т.к. помимо магаза есть и другие ресурсоемкие проекты. Стоимость месяца окупается менее, чем за сутки, так что не паримся. Если жалко денег - можно взять тариф и попроще (но если лишняя тысяча в месяц бьет по вашему карману - видимо, екомерс не для вас:)) Выбор операционки также некритичен, мне просто на дебиане привычнее.
2) Установлена панель VestaCP в конфигурации nginx+php-fpm. MySQL после установки заменен на MariaDB (для некоторых других разновидностей линукса мария ставится "из коробки"), php-fpm обновлен на php7.0-fpm, включен opcache, к nginx добавлен mod_pagespeed. Настройки opcache, php-fpm и MariaDB тупо загуглил, соотнеся рекомендованные в статьях с объемом базы данных и имеющимися ресурсами.
3) В админке престы, "расширенные настройки"->"производительность":
Компиляция шаблонов: Никогда не перекомпилировать файлы шаблона
Кэш: Да
Тип кеширования: Файловое кеширование
Очистка кэша: Очищать кеш при каждом изменении чего-либо
ККК: включены Умное кеширование CSS и JavaScript, сжатие встроенного в HTML JavaScript. Остальные опции из-за особенностей верстки шаблона (довольно кривой, надо сказать) и пейджспида (о нем позже) подглючивали, так что выключил. На других темах, возможно, имеет смысл их включить.
Кеширование в последнем пункте на данной странице выключено. Пробовал XCache, Memcached на разных настройках и существенного прироста производительности не получил.
4) Установил плагин CacheManager, везде поставил время кеширования 1440 минут (т.е. сутки).
5) Конфиг пейджспида в /etc/nginx/nginx.conf (главный конфиг инжина)

конфиг в /home/<юзер>/conf/web/nginx.conf (конфиг доменов в весте, для каждого из доменов)


Указанные выше настройки задают максимальный срок кеширования статики в браузерах, оптимизируют css и javascript на каждой странице, пережимают картинки в webp. Подробнее см. справку гугла по этим опциям, возможно, для вашего сайта придется поиграться с некоторыми значениями. Качество изображений 80% для webp практически не ухудшает их в сравнении с оригиналом. Также включил опцию ServeRewrittenWebpUrlsToAnyAgent (отдавать всем браузерам изображения в формате webp), т.к. подавляющее большинство современных браузеров поддерживает этот формат. Не нравится - выключите. Учтите, что все картинки сразу не перегенерируются, занимает примерно сутки.
Сжатие gzip в конфиге весты по умолчанию уже включено.
Гуглошрифты скачал на сайт и загружаю через localStorage браузера, в этой теме уже отписывался про этот фокус.
Также заменил слайдеры товаров "хиты продаж", "новинки", "похожие" и еще парочку из темы на нагугленные слайдеры с чистым css без яваскрипта. Откуда взял, увы, не помню, но по запросу "pure css slider" без проблем найдете по душе.
На страницах категорий и тегов по умолчанию включено 60 товаров (настоял клиент, вопреки моим увещеваниям). Страницы загружаются моментально даже с таким количеством.
В пейджспиде для главной и страниц категорий имеем 85/100 для мобильных, 92/100 для настольных пк. Баллы сняты за яметрику, гугл аналитикс и сервис обратного звонка и чат с клиентами; также минус за монструозные цсски и яваскрипты из темы. Как дойдут руки их перелопатить и выкинуть лишнее - полагаю, подтяну рейтинг до более солидных величин. Можно перекачивать скриптом и удаленные яваскрипты, чтобы грузились локально - но это уже пляски с бубном какие-то, да и обсуждалось в этой же теме не один раз.
После внедрения всех вышеуказанных мер посещаемость с поисковиков подросла до 500-600 чел в сутки (было 300-400), пропорционально возросло и число заказов. Почти все новые посетители с поисковиков по нч и немного сч, других мер по раскрутке пока не предпринималось.

P.S. Отдельно настраивал кеш fastcgi - все работало просто реактивно, но, увы, из-за него был косяк со стартом сессий на некоторых браузерах, отчего у некоторых юзеров пропадали товары из корзины. Пробовал разные варианты конфигов, но в итоге решил отказаться от этого вида кеша - в принципе, и без него работает достаточно шустро.

Друзья, посодействуйте, пожалуйста, кто может развернуть тексты конфигов из под хайда? Такое ценнейшее руководство с хайдом в 15 сообщений, с моими темпами постинга я смогу это увидеть только через год-два Можно в ЛС. Заранее очень благодарю!

Сам сейчас разворачиваю новую установку престы 1.6.18 для переноса магазина со старого сервера (там преста 1.6.0.7), ещё на php5.4. Пока свежеустановленная преста отдаёт всё с терпимой скоростью, но мне предстоит залить в неё несколько тысяч товаров, это наверняка сильно долбанёт по результату, хотелось бы подготовиться. У меня VestaCP. БД пока MySQL, вот не знаю, есть ли смысл на MariaBD переходить, сперва хочу с конфигами nginx поиграть. О результате отпишусь. Пока скорость ответа сервера 400 мс, в SpeedInsights оценка оптимизации колеблется от 61 до 86, не могу понять от чего зависит - просто в разное время разные цифры, без каких-либо изменений с моей стороны. Оценка скорости SpeedInsights почему-то недоступна. Включено кэширование Smarty, Memcached, PHP 7.1, FastCGI, nginx. Кэширование в браузере ещё предстоит настроить, сейчас тоже этим занимаюсь.
 
Последнее редактирование:
Пытаюсь настроить свой сервер. Спасибо добрым людям, конфиги для nginx у меня :)

В данный момент я застрял на одном любопытном моменте.

В настройках nginx для домена указал:



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

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

Значит, нужно менять конфиг apache. Но тут открылся ещё один момент: в каждой папке PrestaShop лежит файл index.php, в котором буквально вот такой текст:

Код:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Location: ../");
exit;

Уж не в этом ли месте происходит создание некорректных заголовков для картинок?

При этом написано, что эти файлы менять нельзя, если я хочу в дальнейшем обновлять движок. Что-то какая-то жесть...
 
Значит, нужно менять конфиг apache. Но тут открылся ещё один момент: в каждой папке PrestaShop лежит файл index.php, в котором буквально вот такой текст:

Код:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Location: ../");
exit;

Уж не в этом ли месте происходит создание некорректных заголовков для картинок?

При этом написано, что эти файлы менять нельзя, если я хочу в дальнейшем обновлять движок. Что-то какая-то жесть...
Эти файлы для тех, кто захочет тупо попытаться просмотреть содержимое директорий. /img/ , /tools/, и т.п. И их просто редиректнет.

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

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/x-icon "access plus 2 year"
</IfModule>
 
Ребята, случайно наткнулся на модуль Google PageSpeed Insight (Для просмотра ссылки Войди или Зарегистрируйся). Может у кого он уже есть и может поделиться если не модулем, то хотя бы мыслями о его работе.
 
Эти файлы для тех, кто захочет тупо попытаться просмотреть содержимое директорий. /img/ , /tools/, и т.п. И их просто редиректнет.

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

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/x-icon "access plus 2 year"
</IfModule>

Большое спасибо! Сам с расстройства пропустил перенаправление "header("Location: ../");" Сейчас попробую .htaccess
 
Последнее редактирование:
О текущих успехах. Если это успехи)

Пока получилось поднять оценку PageSpeed Insights до 93 для мобильных и 86 для десктопов (с 82 и 76 соответственно).

Сделано это благодаря включению опции "Оптимизация Apache" во вкладке "Производительность" Престы (все остальные виды кэширования, включая Smarty, пока отключены) и настройкам модуля pagespeed для nginx по инструкциям Для просмотра ссылки Войди или Зарегистрируйся, а также благодаря подключению гугл-шрифтов по Для просмотра ссылки Войди или Зарегистрируйся. За оба руководства огромное спасибо Karlasan'у.

Что пока плохо:
  • Скорость ответа сервера 280мс вместо рекомендуемых 200мс.
  • Не сжаты пара файлов и очень короткий срок кэширования внешних скриптов с гугл карт и фейсбука.

Собственно, сейчас с последней проблемой и занимаюсь. Думаю сделать загрузку внешних js через проксирование nginx. Скрипты проксируются следующим образом, в настройках nginx для домена:



И в файлах ссылающихся модулей заменяется ссылка на скрипт с //maps.googleapis.com/maps/api/js на /googlemaps.js. С остальными скриптами по аналогии, будь то метрика, аналитикс или что угодно ещё.

Всё работает, файлы проксируются, но кэширование всё равно оставляет желать лучшего. То есть, идёт тот же срок кэширования, что и был до этого - 30 минут. Ясен пень, проксирование делалось не для такого результата, поэтому добавляю разные параметры в код, который написал выше, какой-то из них да сработает:

Код:
proxy_set_header Cache-Control max-age=2592000;
proxy_set_header Expires 30d;
add_header Cache-Control max-age=2592000;
expires 30d;

Если какой лишний, прошу указать.

Таким образом, удалось кэшировать и внешние скрипты. Балл от PageSpeed Insights для десктопов повысился на единицу, до 87.

Ещё есть, над чем поработать. Буду держать в курсе :)
 
Последнее редактирование:
Ребят, 3 дня назад впервые пересел на vps от одной конторы, все настроил, все работает. Встал вопрос по оптимизации и проведения работ по ускорению престы на сервере, тут и возникли проблемы. На сервере php версии 5,3, ничего поставить не могу, т.к. ограничения версии ispmanag. lite, попросил перевести на версию про, чтобы элементарно хотя бы поменять версию php и установить Xcache или MamCache... в общем поддержка ужасная, после 3 дней футбола с их стороны, решил отказаться от их услуг. Можете посоветовать VPS по оптимальной цене со свежей версией php с ipsmanager-ом и адекватной тех. поддержкой. Заранее благодарен!
 
Ребят, 3 дня назад впервые пересел на vps от одной конторы, все настроил, все работает. Встал вопрос по оптимизации и проведения работ по ускорению престы на сервере, тут и возникли проблемы. На сервере php версии 5,3, ничего поставить не могу, т.к. ограничения версии ispmanag. lite, попросил перевести на версию про, чтобы элементарно хотя бы поменять версию php и установить Xcache или MamCache... в общем поддержка ужасная, после 3 дней футбола с их стороны, решил отказаться от их услуг. Можете посоветовать VPS по оптимальной цене со свежей версией php с ipsmanager-ом и адекватной тех. поддержкой. Заранее благодарен!
это зависит от региональности, возьмите тестовый период и пробуйте.
 
Ребят, 3 дня назад впервые пересел на vps от одной конторы, все настроил, все работает. Встал вопрос по оптимизации и проведения работ по ускорению престы на сервере, тут и возникли проблемы. На сервере php версии 5,3, ничего поставить не могу, т.к. ограничения версии ispmanag. lite, попросил перевести на версию про, чтобы элементарно хотя бы поменять версию php и установить Xcache или MamCache... в общем поддержка ужасная, после 3 дней футбола с их стороны, решил отказаться от их услуг. Можете посоветовать VPS по оптимальной цене со свежей версией php с ipsmanager-ом и адекватной тех. поддержкой. Заранее благодарен!

"Партнёрский частный бизнес-хостинг в Германии на 2018-2019 год"
(в услуги входит: актуальные версии программного обеспечения и защиты от вирусов и атак, оптимальная настройка на быстродействие и безопасность, безлимитный трафик, твердотельные винчестеры, максимальный ресурс 8-,16-,24- ядерного процессора, оперативная память 32-64ГБ всего и 512-1024МБ на посетителя, конфиденциальность, ежедневное и еженедельное резервное копирование, при необходимости помощь и консультации в настройке скриптов и модулей, а также эффективной оптимизации сайтов, особенно под Prestashop и Drupal)
до 2ГБ - 5 EUR/мес (1980 грн/год при оплате на год вперёд)
до 5ГБ - 10 EUR/мес (3800 грн/год при оплате на год вперёд)
до 10ГБ - 16 EUR/мес (6200 грн/год при оплате на год вперёд)
до 25ГБ - 25 EUR/мес (9400 грн/год при оплате на год вперёд)
до 50ГБ - 40 EUR/мес (15600 грн/год при оплате на год вперёд)

следующий уровень, это уже отдельный свой выделенный и независимый сервер:
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
(регистрируется на вас, оплачиваете потом ежемесячно самостоятельно)
порядка 50 EUR/мес аренда будет + разовая настройка порядка 400 EUR (немцам за сборку железа и включение + нам за настройку операционной системы + вечная лицензия на панель управления хостингом)
 
Спасибо!
Остановил свой выбор на айхоре.
 
Назад
Сверху