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

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

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

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

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

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

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

b_5cbfd5c5d0bf6.jpg

Частые проблемы 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 раз, одним запросом. Количество товаров для каждой подкатегории считается сразу на уровне базы, это позволяет также дополнительно сэкономить время.

b_5cbfd6549f39a.jpg

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

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

+2
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Ускорение сайта от loading.express!
Быстрый сайт = много продаж. Медленный сайт = убийца продаж!
Алексей Махметхажиев
Быстрые сайты это тренд!
Ответить
Эдуард Шамазов
Сколько стоят такие услуги? Я бы обратился
Ответить
APRIORUM
Центр интернет-маркетинга, digital-технологий и развития бизнеса
Леонтьева Ольга
Да, обращайтесь, всегда рады. Многие обращаются к нам с такими запросами. В Opencart это часто тормоза самого Opencart, шаблона или модулей, в Prestashop аддонов, в Битриксе - ошибке разработки. Опыт ускорения сайтов до 99 баллов по Pagespeed и устранения зависаний страниц. Для любой предварительной оценки работ надо посмотреть на Ваш сайт.
Ответить
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.