Расскажите о вашей задаче, наша команда пресейла сразу начнет погружение в ваш проект
Давайте обсудим ваш проект
Блог
Карьера
О нас
Мы используем куки для лучшей работы сайта
Понятно

Кейс Allsoft

Продажа ПО
Интернет-магазин
B2В
Ускорить загрузку страниц сайта на Битрикс в 4 раза
{ клиент }

Allsoft (входит в ГК Softline) — ведущий российский интернет-ритейлер лицензионного ПО, обслуживающий корпоративных и частных клиентов, для которых время является критическим ресурсом.
{ предисловие }
Знакомство и сбор команды
По рекомендации нашего партнёра, «Умный маркетинг», к нам обратился представитель из компании Allsoft. Ей требовались эксперты в «Битриксе», которые могли бы разобраться, почему сайт медленно работает и выделить самые важные точки приложения усилий.

Представитель компании написал мне в телеграмм конкретный запрос: провести аудит производительности. Сайт работал на «1С-Битрикс», и команда клиента понимала, что есть проблемы, но не знала, с чего начать. Страницы загружались по 8−10 секунд, что могло отпугивать пользователей и снижать конверсию.
Кирилл, добрый день. Ваш контакт дал Сергей Степанов из  Умного Маркетинга. Павильно понимаю что вы делаете аудит сайтов?
Добрый день! Да, мы сделаем для вас отличный аудит!
н
{ проблема }
Аудит, который выявил «узкие места»
Начинаем с аудита кода сайта, чтобы понять что именно тормозит, где медленный код.
Используя стандартные инструменты «Битрикса», мы проанализировали рабочий сайт и выявили самые медленные страницы и компоненты.

Чтобы копнуть глубже, мы развернули тестовую копию сайта. Здесь в ход пошел наш собственный инструмент для отладки кода — скрипт, который позволяет визуально оценить, сколько времени выполняется функция на конкретном участке кода. Это как посмотреть на загрузку страницы под микроскопом. Мы расставили «метки» в коде и замерили скорость работы каждой функции и класса.
Анализ показал два главных виновника медленной загрузки на страницах товаров:
  • Подгрузка версий программного обеспечения.
    У одного продукта, например, антивируса, может быть несколько десятков вариантов лицензий.
  • Загрузка информации о скидках и акциях.
    Оказалось, что блок с акциями тормозил сильнее всего — его загрузка занимала от 3 до 5 секунд. Варианты лицензий добавляли еще 2-4 секунды. И все это происходило на стороне сервера еще до того, как страница начинала загружаться у пользователя.

  • Илья Саранчев
    TechLead
    По итогам аудита был составлен подробный 48-страничный отчёт с описанием всех проблем, серверного окружения и рекомендациями по оптимизации.
{ задача }
Ускорить работу сайта
С готовым аудитом мы созвонились с командой Allsoft,  На встрече мы представили список задач приоритизированный по максимально экономической эффективности.

Часть рекомендаций из аудита, например, переключение кэширования с ОЗУ на файловый кэш, команда из Allsoft реализовала своими силами. И это сразу ускорило общую работу сайта, за счёт того, что кеш не вытесняется из ОЗУ из-за его нехватки, а хранится на диске.

Наша команда взялась за оптимизацию двух взаимосвязанных компонентов на детальной странице товара: компонента, который выводит информацию о самом товаре: Описание, картинки и отзывы. И вложенный компонент который выводит варианты различные вариантов лицензий с ценой, информация о доставках и скидках.
{ решение }
Командная работа и нестандартные решения
В процессе работы выяснились новые детали. Оказалось, что данные об акциях и наличии лицензий подгружаются из сторонних сервисов, что нехарактерно для платформы Битрикс. Обычно вся информация о скидках хранится непосредственно в Битрикс, но в данном случае все скидки формируются во внешнем сервисе. При каждой загрузке страницы информация о скидках запрашивалась из внешнего сервиса, причем неоднократно, что замедляло загрузку всей страницы. Простое кэширование таких запросов невозможно, так как в случае отмены скидки во внешнем сервисе сайт будет отображать устаревшую информацию.

Тогда мы предложили решение — вынести загрузку «тяжелых» блоков на AJAX.

Простыми словами: это когда основная часть страницы загружается мгновенно, а менее важные, но «тяжелые» блоки (в нашем случае — варианты лицензий и акции) подгружаются чуть позже, уже после того, как пользователь увидел страницу.
Влад Кленов
разработчик
Это решение позволило бы кардинально ускорить первоначальную загрузку страницы. Однако  для поисковых роботов важно, чтобы информация об акциях и ценах была сразу доступна в основной части страницы, роботы не видят информацию которая подгружается через ajax. Мы проконсультировались с SEO-специалистами клиента и определили, какие данные можно подгружать асинхронно, а какие должны оставаться в коде страницы.
Александра Коротаева
Проектный менеджер
Команда Allsoft с самого начала очень переживали за безопасность и стабильность сайта. Любое наше действие требовало согласования и тщательной проверки. Работы велись на тестовом стенде (dev), а перед выкаткой на «рабочий» сайт (prod) все наши изменения в коде принимал технический директор Allsoft.ru.
{ итог }
Ускорение в 4 раза и довольный клиент
Совместно с командой Allsoft мы зарелизили оптимизированный код на «рабочий» сайт. И при тестировании на рабочей версии оказалось, что при некоторых сценариях перестала отображаться цена с персональной скидкой.

Этот артефакт заметила команда Allsoft и написали нам в Telegram, мы оперативно созвонились и совместно нашли причину. Проблема образовалась из-за того что скидка видна только постоянным покупателям, а разработчики со своих аккаунтов ее не видели.

Мы добавили в код проверку на наличие персональной скидки. И пока добавляли, обнаружили, что для мобильной версии сайта используется отдельный шаблон и добавили код проверки на наличие скидки и туда тоже.
8-9 секунд
Среднее время генерации:
2-3 секунды
Среднее время генерации:
  • 2-3

    секунды открываются самые «тяжелые» страницы
  • х4

    увеличили скорость загрузки страниц
  • Илья Саранчев
    TechLead
    Но и это не предел, в следующий этап работ, мы закладываем загрузку тяжелых страниц за 1-2 секунды.
{ стек технологий }
В проекте использовали
1C-Битрикс
Собственный инструмент для отладки кода
Разработчики
Владислав Кленов
Проектный менеджер
Александра Коротаева
Тестировщик
Елена Домницкая
TechLead
Илья Саранчев
{ кейсы }
Смотрите другие кейсы