Главное Авторские колонки Вакансии Образование
😼
Выбор
редакции
5 462 3 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Как одно слово тормозило весь сайт на 3 секунды - исправляем медленную загрузку сайта на Opencart

Большинство наших кейсов начинается словами В работу на продвижение и обслуживание поступил сайт и этот кейс не будет исключением.
Мнение автора может не совпадать с мнением редакции

Итак. В работу принят проект и одна из его многочисленных проблем оказалась медленная загрузка сайта.

Изучаем проблему

Компания - производитель и оптовый поставщик авторских украшений из итальянского стекла. Сайт компании — интернет-магазин дизайнерской бижутерии из стекла ручной работы. Работает на системе Opencart. Редакция 2.0.1.1.

Время отклика составляло более 5000 мс, а полное время загрузки превышало 10 секунд. Эти значения настолько высокие, что даже Google и Яндекс периодически отказывались проверять эти сайты на скорость и время отклика.

Частые проблемы Opencart

Опенкарт считается простой и удобной системой. Мы работали с сайтами на Opencart 1.5, 2.0, 3.0 и их версиями. Выделим основные проблемы системы, затрудняющие seo, продвижение и развитие сайтов:

  • однотипность шаблонов;
  • российское способы доставки, оплаты, 1С и другие сервисы являются дополнительными модулями, которые могут начать конфликтовать;
  • недостаточная простота настройки чпу из коробки;
  • проблемы с работой фильтров при увеличении количества товаров;
  • избыточное количество строк кода в контроллерах;
  • громоздские запросы к базе данных.
Наши специалисты более 10 лет создают, продвигают и обслуживают сайты на различных cms. Если Вы хотите создать сайт и не получить вместо сайта проблемы — посоветуйтесь со специалистами APRIORUM GROUP какую систему выбрать для сайта и как сделать сайт инструментом решения бизнес-задач.

Что рекомендуем проверять в первую очередь

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

Что сделано в данном случае:

  • Настроен сервер
  • Обновлено серверное программное обеспечение
  • Произведено сжатие html-кода
  • Сжаты стили и js-скрипты сайта
  • Оптимизирован php-код
  • Оптимизированы изображения
  • Оптимизация БД

Это позволило существенно увеличить скорость, но при этом она оставалась далеко за пределами допустимого уровня.

Реальная причина тормозов

В заголовке кейса мы обещали рассказать как всего лишь одно слово тормозило сайт. Конечно, удаление слова из текста не решило бы проблему. Но если слово является пунктом меню или другим элементом с подвязанными скриптами, обращениями к БД, то здесь и может таиться корень проблемы.

Поиск проблемы долгого отклика сайта

Нередко долгий отклик сайта связан с тем, что php-код не оптимизирован. Вот некоторые из возможных проблем:

  • производится много лишний операций;
  • те данные из базы, которые можно забрать одной функцией разбивается на подфункции и зацикливается;
  • из базы подхватываются лишние данные — ненужные в конкретный момент описания, картинки либо неотфильтрованные по определённому полю — например, активность;
  • производятся ненужные сортировки.

Иногда на некоторых системах управления также могут возникать проблемы со временем отклика из-за большого количества установленных модулей, плагинов, компонентов, решений и пр. Всё дело в том, что клиенты устанавливают плагин, активируют его. Попробовали, испытал неделю и бросили. А операции плагина, которые выполняются на каждом хите (при каждом открытии страницы), всё равно исполняются. И если установить достаточно большое количество плагинов, ещё и неоптимизированных с точки зрения PHP, скорость отклика сайта может замедлиться на значительные цифры и стать около 0.500 мс и больше.

Из всех вышеописанных ситуаций самостоятельно, без привлечения специалистов можно только деинсталлировать лишние модули / плагины, и то, только в том случае, если Вы уверены, что этот плагин действительно лишний (рекомендуем сделать бэкап перед тем, как сделать это).

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

Двадцатикратное замедление действительно было связано с одним словом - Коллекции. Если убрать эту категорию с сайта то время ответа сервера снижается с 4.000+ мс до 0.200 мс. Проблема заключалась в том, что в этой категории находится более чем 70 подкатегорий, в каждой из которых в среднем по 6 товаров. Для каждой категории нужно запросить данные — картинку, описание и пр., посчитать количество товаров в подкатегории (в коде это было далеко не самым простым способом), при этом в коде все эти процедуры, по непонятным причинам, выполнялись несколько раз. По всей видимости, один раз для верхнего меню, второй раз для бокового и контрольный на самой странице категорий. Посмотришь — глаз начинает дёргаться.

Варианты решения для ускорения сайта

Если Вы не знакомы с программированием и не хотите тратить время, самым быстрым вариантом в данном случае является отключение раздела Коллекции. Интернет-магазин предлагает покупателям украшения с эксклюзивным характером, обладающие стилем, изысканностью и индивидуальностью и их объединение в коллекции позволяет покупателям более четко идентифицировать изделия. Для теста убираем слово Коллекции из меню — замер скорости показывает увеличение в 5 раз.

В данном случае отключение пункта влияло на удобство сайта для пользователей — в интернет-магазине представлено более 50 авторских дизайнерских коллекций бижутерии — и такой вариант не рассматривался.

Что в итоге — изменили код таким образом, что коллекции подхватываются из базы 1 раз, одним запросом. Количество товаров для каждой подкатегории считается сразу на уровне базы, это позволяет также дополнительно сэкономить время.

Со стороны может казаться, что сделать это было очень легко, и вообще это делается 5 минут, и непонятно, что вы там всё это время делаете. Однако все действия требуют отладки, тестирования. Найти конкретный участок кода, который тормозит весь сайт, тоже непросто, из-за сложной архитектуры проектов, большой структуры скриптов, которые отвечают за определенные задачи, и подключаются на каждый хит (открытие страницы). После того, как плохой участок кода найден, придумать решение и написать его — отдельная задача.

Результат виден невооруженным глазом — из сайта с откликом больше 4 секунд (как говорят пользователи - сразу возникает недоверие к таким тупящим сайтам), на котором находиться не очень приятно из-за очень больших задержек в открытии разделов, кликах на кнопки добавления и переходов в корзину, оформлении заказа и т.д., интернет-магазин превратился в быстрый ресурс.

+2
В избр. Сохранено
Авторизуйтесь
Вход с паролем