«О чем вы думаете, когда слышите «реанимация»? – спрашивает Андрей Сидоренко, Lead Magento Developer в NIX. – Наверняка представляете сцену из медицинского сериала, в которой команда врачей спасает жизнь. Разработчики, конечно, не медики. Но их задача – заботиться о “здоровье” веб-ресурсов». Каждый день команда Андрея имеет дело с «реанимацией» сайтов на платформе Magento.

В партнерском материале эксперт NIX рассказывает, какие проблемы могут возникать с сайтами, разработанными на этой платформе, и как оптимизировать страницу, если что-то не так.

Партнерский материал?

Какие проблемы могут ожидать сайт Magento

Magento представляет собой известную ecommerce-систему с открытым исходным кодом. Сайты на этой платформе обычно создаются для больших интернет-магазинов с огромным ассортиментом. На сегодня на базе Magento существует уже более 100 тыс. сайтов.

Открытая структура платформы и разнообразие модулей позволяют разработчикам реализовать самые разные бизнес-концепции. А еще она хорошо подходит для SEO и настроек для продвижения в результатах поиска Google.

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

Чаще клиенты жалуются, что снизились или совсем прекратились продажи. Конечно, проблема может быть в товаре и его цене, но проверить нужно всё. Ведь покупателей от заказа отвлекают и технические проблемы: медленная загрузка страниц или, например, ошибка с корзиной.

«Чтобы погрузиться в проблемы сайта, мы используем определенный чек-лист для анализа и корректировки проблем», – объясняет Андрей Сидоренко.

 

Как оптимизировать сайт на Magento

  1. Анализ инфраструктуры

Сначала нужно изучить инфраструктуру сайта: окружение, в котором выполняется код, и соответствие настроек доступным ресурсам. Иногда страница требует больше ресурсов, чем есть. К примеру, если очень много посетителей одновременно обращаются к сайту, он может стать недоступным для одного из них или вообще для всех. В таких случаях нужно разобраться, как помочь: оптимизировать настройки или просто увеличить оперативную память.

Если проблемы на уровне инфраструктуры, их следует устранить перед переходом к следующему этапу. Без правильной настройки операционной системы и приложений, которые поддерживают работу сайта, базовые проблемы не решить. Ведь именно ОС является фундаментом, без которого невозможна корректная работа сайта. Если операционная система утратила актуальность или не подлежит обновлению, то необходимо переходить на новую платформу. Тем более иногда проще наладить все с нуля на новом оборудовании или другом сервисе.

Кроме этого, при работе с магазином на платформе Magento следует обращать внимание на выбранный хостинг, сервер и веб-сервер. Также очень важно убедиться в наличии сертификата SSL. Он необходим для HTTPS-соединения, получить его можно бесплатно и в современном интернете без него не обойтись. Это важно не только с учетом безопасности, которую гарантирует такой сертификат. Не менее значимо то, что Google может уменьшать видимость ресурса без SSL или давать ему минимальный рейтинг.

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

  1. Проверка взаимодействия с внешними сервисами

Следующий шаг – проанализировать, как сайт работает с разными сторонними сервисами. К примеру, страницы часто используют карту Google, чтобы показать место магазина или точки выдачи товаров.

Но несколько лет назад Google потребовал обязательного использования API-ключа для карты. Это может вызвать некоторые проблемы: карта просто не отображается из-за отсутствия ключа.

  1. Оценка трафика сайта

Затем необходимо определить текущую активность на сайте, то есть узнать количество посетителей и оформленных заказов в день. Здесь поможет Google Analytics, где собрана вся необходимая статистика.

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

  1. Анализ TTFB

TTFB, сокращение от time to first byte, – это интервал от запроса до получения первой порции данных от сервера. Если говорить на простом языке, это время между кликом на ссылку и моментом, когда начинает загружаться страница. Это уже первая нагрузка на сайт. Поэтому нужно оценить, как хорошо настроен сервер и с какой скоростью он отвечает на запросы. Если время ответа на ключевые страницы слишком большое, нужно разобраться в причинах.

В актуальных версиях Magento TTFB может достигать одной секунды, а в предыдущих редакциях платформы – чуть ли не вдвое больше. Но речь идет о страницах вне кеша. А вот с правильным кешированием время загрузки сокращается до 200–300 миллисекунд, что может временно решить проблемы задержки в ответ на запрос на страницу.

  1. Внедрение кеша

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

В целом кешируются страницы, где содержимое редко обновляется. Это могут быть, например, главная страница, каталог, продукты или контакты. При первой загрузке страницы она генерируется с нуля, поскольку ее еще нет в кеше. При этом в Magento создается сначала верхняя часть страницы с главным меню, потом основной контент и лишь затем нижняя часть за пределами первого экрана, которую пользователь не видит, пока не начнет скролить страницу. В стандартных условиях на это уходит 1–2 секунды. Но если сама страница в дальнейшем не меняется, то не стоит при последующих запросах ее постоянно генерировать с нуля – можно просто забросить ее в кеш и моментально выдавать готовый результат в ответ на новый запрос.

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

Также можно встретить устаревшие дополнения, которые замедляют сайт. Из-за ошибок в коде или плохой организации запросов в базу данных при увеличении трафика могут возникать проблемы. Например, у Nix был проект, где для создания страницы генерировалось несколько тысяч запросов в базу данных вместо нужных 100–200. Пришлось переписать часть кода, чтобы сайт стал действительно таким быстрым, каким должен быть.

  1. Обнаружение ошибок на сайте

Это едва ли не главная задача: найти все ошибки, определить причины и устранить их. Для этого прежде всего нужно зайти в директорию var/report и файл exception.log, где хранятся ошибки. Правда, в последнем файле логи регулярно обновляются, поэтому их содержимое меняется. А вот в папке report могут быть старые ошибки, забытые предыдущими разработчиками, что делает их особенно ценными для анализа. И там по каждому типу ошибки иногда могут быть десятки, а то и сотни файлов. Для упрощения и качества работы следует классифицировать ошибки по типам, определить самые критические и ранжировать другие по уровню влияния на работу сайта. Устранение одной ошибки может автоматически решить ряд других, связанных с ней проблем.

Но важно помнить, что в процессе корректировки можно случайно столкнуться с функционалом, о существовании которого вы не подозревали. Поэтому прежде чем устранять проблему, выясните причину ее возникновения. Может быть, нужно исправить не то, что кажется на первый взгляд. Иногда баг является лишь проявлением другой проблемы, и решать ее нужно где-нибудь в другом месте. Бывает, что конкретная ошибка спасала от катастрофического сценария вроде падения сервера. То есть это была не ошибка, как показалось, а защитная мера.

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

  1. Улучшение работы со статическим контентом

У Magento 2 есть много статического контента. Это стили сайтаКак реанимировать сайт на Magento: 10 советов от девелопера из NIXКак реанимировать сайт на Magento: 10 советов от девелопера из NIXCSS, скрипты для браузераКак реанимировать сайт на Magento: 10 советов от девелопера из NIXКак реанимировать сайт на Magento: 10 советов от девелопера из NIXJavaScript и HTML-документы, которые используются в этих скриптах. И вся эта статика разнесена по отдельным файлам. Поэтому без специальной настройки сайт работает очень медленно, ведь может загружать каждый файл по отдельности и создавать таким образом чрезмерную нагрузку на сервер. Для понимания масштаба проблемы: при посещении страницы оформления заказа вы можете загрузить до 500 файлов JavaScript.

Чтобы улучшить ситуацию, Magento предлагает объединить JavaScript в так называемые бандлы, наборы. Тогда вместо сотен отдельных файлов браузер загрузит всего несколько упакованных. Но есть недостаток: необходимо скачивать все JavaScript-скрипты каждый раз. В этом случае необходимо настроить кеширование на стороне клиента, благодаря чему можно загружать эти файлы только один раз. И тогда они будут просто браться из кеша браузера. Хотя существует и другой, более продвинутый метод – Advanced Bundling. Детальнее о нем – по этой ссылке.

Но настроить браузерное кеширование не так-то просто. Предположим, что мы внедрили новый функционал и изменили для этого CSS- и JS-файлы. Поэтому нововведение будет доступно только тем, кто снова загрузит весь статический контент. Но ведь у тех, кто уже хранит файлы в кеше браузера, обновление произойдет только после смены URL-адреса самих файлов. Именно для этого у Magento существует механизм подписи статического контента. В его адрес добавляется строка Unix Timestamp, которая обновляется с каждым деплоем. Тогда браузер просто перезагружает последнюю версию CSS и JS, что обеспечивает актуальность контента.

  1. Контроль интеграций с внешними сервисами

Для конечного пользователя все действия практически завершаются после оплаты. Но для бизнеса основные процессы здесь только начинаются. А ведь надо обработать заказ и передать покупателю. И здесь на помощь владельцам сайтов на Magento приходит множество сторонних сервисов, которые автоматизируют дальнейшее выполнение заказа. Например, передача данных на склад для упаковки и почтовым службам для доставки товара клиенту.

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

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

  1. Непрерывный мониторинг сайта

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

Лучше использовать разные инструменты мониторинга. Ведь универсальных нет. Одни фокусируются на работе сервера, использовании оперативной памяти или загрузке диска, а другие – на производительности самого веб-сайта. Только сочетание разных инструментов дает полное представление о работе сайта.

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

В Nix для контроля инфраструктуры используют Zabbix и Influxdb. А для отслеживания работы сайтов – Tideways и New Relic. Все они позволяют мониторить сайт в реальном времени и собирать важные метрики. А еще эти инструменты могут давать рекомендации. Например, New Relic может дать обратную связь о том, довольны ли пользователи вашим сайтом.

  1. Осведомленность владельцев сайтов

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

Эти мысли очень важно донести до заказчиков. Разработчики должны не просто решить проблему, но и показать клиенту причины и возможные последствия. Не бойтесь рассказывать, что вы сделали. Это позволит человеку без ваших компетенций понять сложность и тяжесть задач.

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

Партнерский материал?

Это партнерский материал. Информацию для этого материала предоставил партнер.
Редакция отвечает за соответствие стилистики редакционным стандартам.
Заказать материал о вас в формате PR-статьи вы можете здесь.

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: