WordPress — самая популярная система управления контентом (Content Management System, CMS) в мире. На ней с момента запуска работает и MC.today, а также ITC.ua и Highload — издания, принадлежащие Media Creators Group. Проблемой WordPress оказалась работа под нагрузками: в моменты наплыва аудитории нередко ухудшалась скорость доступа к сайту для всех пользователей.
Оптимизацией работы WordPress для MC.today занималось агентство веб-дизайна и разработки SOLAR Digital. Об этом процессе рассказали генеральный директор Кирилл Соляр и Project Manager Officer Павел Устинов.
Предыстория
На момент старта, в мае 2017 года, в MC.today работало два автора, которые выпускали три-четыре материала в день. Сегодня над ресурсом работают уже 15 человек, которые суммарно выпускают около 15 новых текстов каждый день. Аудитория достигает 750 тыс. уникальных посетителей в месяц и растет примерно на 10% ежемесячно.
Пока MC.today имел до 500 тыс. пользователей в месяц, стандартная конфигурация WordPress вполне справлялась, но выше этого порога начали нарастать проблемы. Сайт мог ненадолго «падать» под нагрузкой, а выпуск статей усложнился, так как недоступной могла оказаться и панель администратора. Стало ясно, что CMS надо оптимизировать.
Как чинить WordPress
С WordPress связано много негативных стереотипов, например, распространено мнение, что это изначально «тормозной движок». В SOLAR Digital утверждают, что это не так: как и любая другая комплексная CMS, WordPress требует внимания и грамотной настройки. При соблюдении этих условий на нем можно сделать сайт почти любой направленности, который будет работать быстро. «Но важно изначально понимать, что для крупных и масштабных проектов WordPress подходит плохо, его поддержание на плаву в этом случае будет ощутимо бить по карману», — уточняет Павел Устинов.
Вот какие проблемы с WordPress на MC.today нашли в SOLAR Digital и как их исправляли:
1Статистика
На MC.today счетчик просмотров статьи был реализован при помощи плагина Slimstat Analytic. Но кроме данных о входе на страницу пользователя, он собирал огромное количество ненужной информации: время сессии, вид устройства, продолжительность просмотра и так далее. Вся эта лишняя информация хранилась в основной базе данных сайта, занимая 1,5 Гб места. Это не только замедляло работу в администраторской панели редакции, но и «тормозило» отображение сайта в браузерах посетителей.
Чтобы решить проблему, разработчики удалили установленный плагин, а вместо него подключили внешнее приложение собственной разработки, написанное на языке PHP и фреймворке Laravel. Оно подсчитывает просмотры, записывая данные на отдельный хостинг-сервер. При этом опрос счетчика производится прямо в браузерах посетителей сайта, полностью освобождая от нагрузки движок WordPress, который раньше считал посещения самостоятельно. По такому же принципу был разработан и рейтинг блогеров.
2Кэширование
Стандартная система кэширования была заменена на прогрессивную. Для этого установили связку W3 Total Cache + Memcached.
W3 Total Cache — один из лучших на сегодня плагинов, обеспечивающий оптимизацию ресурсов (кэширование страниц, объектов, данных и т. п.) как на стороне сервера, так и на стороне клиента (браузера).
Memcached — специальный сервис, кэширующий данные в свою оперативную память (хранилище на основе хеш-таблиц) в обход базы данных сервера. После его подключения страницы, загруженные в кэш сервиса, начнут грузиться ощутимо быстрее. Если же страница еще ни разу не запрашивалась и ее нет в кэше, то Memcached быстро вносит ее в базу, чтобы так же быстро выдать ее пользователю при следующем запросе.
3Хостинг-сервер.
База данных сайта тормозила веб-сервер, находясь с ним на одной «машине». Ее перенесли на физически отдельный от веб-сервера компьютер, что положительно отразилось на скорости загрузки.
4Производительность по Google PageSpeed
Скорость загрузки страниц важна не только для пользовательского опыта, но и для ранжирования в поисковых системах. Вот что сделали для ее оптимизации:
- минификация и конкатенация кода, удаление ненужных стилевых и скриптовых файлов;
- равномерное распределение нагрузки веб-страницы за счет фоновой загрузки изображений во время прокрутки страницы;
- оптимизация размера загружаемых изображений.
5Отсутствие CDN-сервиса.
Установили CloudFlare — CDN-сервис, который анализирует настройки сайта и уменьшает количество запросов на сервер. Он позволяет в автоматическом режиме кэшировать большинство статических ресурсов (CSS-файлы, скрипты JavaScript, картинки) и защищает ресурс от DDoS-атак. А еще сжимает картинки и использует при работе прогрессивные форматы изображений (например, WebP).
6Ненужные для работы сайта плагины.
Их удалили, а функциональность реализовали на собственном коде, который выполняется ощутимо быстрее.
7Устаревшая версия WordPress.
Ее обновили для исправления проблемных мест и уязвимостей, которые были в старых версиях. А еще установили последнюю версию PHP 8.3, которая работает гораздо стабильнее.
О чем нужно помнить при работе с WordPress
Вот небольшой список общих советов, доступных для реализации практически каждому — включая даже новичков в работе с WordPress:
- Любому разработчику на WordPress необходимо детально изучить кодекс CMS. Если хотите дружить с WordPress, без кодекса — никуда.
- Настройте кэширование. Основательно разобраться с ним важно, чтобы не заставлять пользователя нервничать при долгом ожидании загрузки страницы. Кэширование бывает разным, изучите и выберите наиболее подходящее именно вам.
- Устанавливайте шаблоны и плагины с умом. Не перегружайте функциональностью ресурс, и он будет стабильно работать еще долгое время.
- Не забывайте обновлять WordPress и PHP. Помните о безопасности и постоянно появляющихся новых уязвимостях системы.
- Сделайте сайт более заметным для поисковых систем, используя концепцию SEO-friendly.
О каких слабых местах WordPress надо знать
Типичных узких мест WordPress в SOLAR Digital выделяют несколько:
Безопасность
WordPress — платформа с открытым исходным кодом, а это притягивает хакеров со всего мира. Они находят уязвимости в системе и используют их для вредоносных действий (спам, зомби-сети, фишинг, SEO-манипуляции и так далее). Решение — систематическое обновление WordPress и его плагинов, ведь при каждом из них разработчики стараются исправить все найденные уязвимости.
Код
PHP-код WordPress иногда называют устаревшим, но с ним можно эффективно работать, если изучить кодекс WordPress, который уже упоминался выше. Если ему следовать, то проблемных ситуаций быть не должно. Новичкам можно начать вот с этой страницы.
Таксономии
Таксономии — атрибуты находящихся на сайте записей. Это свойства товаров, постов или другого контента на вашем ресурсе. Таксономии привязываются к записи в одной таблице, и чтобы посмотреть значение определенного атрибута, система перебирает всю таблицу полностью. Если у вас на сайте два десятка записей — проблем не возникнет. Но если позиций 25 000 и у каждой по 50 атрибутов — то это в сумме 1 250 000 таксономий. Это чрезвычайно влияет на производительность — в этом и есть основное ограничение использования WordPress на крупных сайтах (например, если у вас онлайн-магазин, в котором 25 000 товаров с разными свойствами).
Чрезмерная установка плагинов и шаблонов
Это распространенная проблема начинающих разработчиков. Коммерческие разработчики создают плагины и шаблоны с упором на универсальность, стараясь сделать их способными решить максимальное количество различных задач. Но много — это не всегда хорошо. Лишняя функциональность зачастую тормозит процесс обработки данных и влияет на производительность.
Уровень разработчиков
Еще одна проблема экосистемы вокруг WordPress, которая ударяет по репутации и самой платформы, — это уровень исполнителей с бирж фриланса, к которым часто обращаются заказчики в поисках недорогого решения проблемы.
«За символические деньги анонимные спецы навешают на ваш сайт пару-тройку плагинов оптимизации, а затем покажут несколько красивых диаграмм из тестов, чтобы вы удостоверились, что проблема якобы решена. Вы и не догадаетесь, что основные причины снижения скорости никуда не делись», — утверждает Павел Устинов.
После такой оптимизации, по его словам, есть риск получить сайт, обвешанный новыми плагинами, с кучей «мусора» в коде и высокой нагрузкой на сервер.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: