UA RU
logo

Как «научить» WordPress справляться с высокой нагрузкой. Кейс MC.today, издания с больше 1 млн посетителей в месяц

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

Узнать больше о SOLAR

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:

  1. Любому разработчику на WordPress необходимо детально изучить кодекс CMS. Если хотите дружить с WordPress, без кодекса — никуда.
  2. Настройте кэширование. Основательно разобраться с ним важно, чтобы не заставлять пользователя нервничать при долгом ожидании загрузки страницы. Кэширование бывает разным, изучите и выберите наиболее подходящее именно вам.
  3. Устанавливайте шаблоны и плагины с умом. Не перегружайте функциональностью ресурс, и он будет стабильно работать еще долгое время.
  4. Не забывайте обновлять WordPress и PHP. Помните о безопасности и постоянно появляющихся новых уязвимостях системы.
  5. Сделайте сайт более заметным для поисковых систем, используя концепцию SEO-friendly.

О каких слабых местах WordPress надо знать

Типичных узких мест WordPress в SOLAR Digital выделяют несколько:

Безопасность

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

Код

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

Таксономии

Таксономии — атрибуты находящихся на сайте записей. Это свойства товаров, постов или другого контента на вашем ресурсе. Таксономии привязываются к записи в одной таблице, и чтобы посмотреть значение определенного атрибута, система перебирает всю таблицу полностью. Если у вас на сайте два десятка записей — проблем не возникнет. Но если позиций 25 000 и у каждой по 50 атрибутов — то это в сумме 1 250 000 таксономий. Это чрезвычайно влияет на производительность — в этом и есть основное ограничение использования WordPress на крупных сайтах (например, если у вас онлайн-магазин, в котором 25 000 товаров с разными свойствами).

Чрезмерная установка плагинов и шаблонов

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

Уровень разработчиков

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

«За символические деньги анонимные спецы навешают на ваш сайт пару-тройку плагинов оптимизации, а затем покажут несколько красивых диаграмм из тестов, чтобы вы удостоверились, что проблема якобы решена. Вы и не догадаетесь, что основные причины снижения скорости никуда не делись», утверждает Павел Устинов.

После такой оптимизации, по его словам, есть риск получить сайт, обвешанный новыми плагинами, с кучей «мусора» в коде и высокой нагрузкой на сервер.

Партнер проекта?

Узнать больше о SOLAR

Ваша жалоба отправлена модератору

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

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