CибирскийШaмaн
Создатель
- Регистрация
- 12 Фев 2016
- Сообщения
- 19
- Реакции
- 11
Напишу все свои наработки по оптимизации престы 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. Кэширование в браузере ещё предстоит настроить, сейчас тоже этим занимаюсь.
Последнее редактирование: