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 связано много негативных стереотипов, например, распространено мнение, что это изначально «тормозной движок». В SOLAR Digital утверждают, что это не так: как и любая другая комплексная CMS, WordPress требует внимания и грамотной настройки. При соблюдении этих условий на нем можно сделать сайт почти любой направленности, который будет работать быстро. «Но важно изначально понимать, что для крупных и масштабных проектов WordPress подходит плохо, его поддержание на плаву в этом случае будет ощутимо бить по карману», — уточняет Павел Устинов.
Вот какие проблемы с WordPress на MC.today нашли в SOLAR Digital и как их исправляли:
На MC.today счетчик просмотров статьи был реализован при помощи плагина Slimstat Analytic. Но кроме данных о входе на страницу пользователя, он собирал огромное количество ненужной информации: время сессии, вид устройства, продолжительность просмотра и так далее. Вся эта лишняя информация хранилась в основной базе данных сайта, занимая 1,5 Гб места. Это не только замедляло работу в администраторской панели редакции, но и «тормозило» отображение сайта в браузерах посетителей.
Чтобы решить проблему, разработчики удалили установленный плагин, а вместо него подключили внешнее приложение собственной разработки, написанное на языке PHP и фреймворке Laravel. Оно подсчитывает просмотры, записывая данные на отдельный хостинг-сервер. При этом опрос счетчика производится прямо в браузерах посетителей сайта, полностью освобождая от нагрузки движок WordPress, который раньше считал посещения самостоятельно. По такому же принципу был разработан и рейтинг блогеров.
Стандартная система кэширования была заменена на прогрессивную. Для этого установили связку W3 Total Cache + Memcached.
W3 Total Cache — один из лучших на сегодня плагинов, обеспечивающий оптимизацию ресурсов (кэширование страниц, объектов, данных и т. п.) как на стороне сервера, так и на стороне клиента (браузера).
Memcached — специальный сервис, кэширующий данные в свою оперативную память (хранилище на основе хеш-таблиц) в обход базы данных сервера. После его подключения страницы, загруженные в кэш сервиса, начнут грузиться ощутимо быстрее. Если же страница еще ни разу не запрашивалась и ее нет в кэше, то Memcached быстро вносит ее в базу, чтобы так же быстро выдать ее пользователю при следующем запросе.
База данных сайта тормозила веб-сервер, находясь с ним на одной «машине». Ее перенесли на физически отдельный от веб-сервера компьютер, что положительно отразилось на скорости загрузки.
Скорость загрузки страниц важна не только для пользовательского опыта, но и для ранжирования в поисковых системах. Вот что сделали для ее оптимизации:
Установили CloudFlare — CDN-сервис, который анализирует настройки сайта и уменьшает количество запросов на сервер. Он позволяет в автоматическом режиме кэшировать большинство статических ресурсов (CSS-файлы, скрипты JavaScript, картинки) и защищает ресурс от DDoS-атак. А еще сжимает картинки и использует при работе прогрессивные форматы изображений (например, WebP).
Их удалили, а функциональность реализовали на собственном коде, который выполняется ощутимо быстрее.
Ее обновили для исправления проблемных мест и уязвимостей, которые были в старых версиях. А еще установили последнюю версию PHP 8.3, которая работает гораздо стабильнее.
Вот небольшой список общих советов, доступных для реализации практически каждому — включая даже новичков в работе с WordPress:
Типичных узких мест WordPress в SOLAR Digital выделяют несколько:
WordPress — платформа с открытым исходным кодом, а это притягивает хакеров со всего мира. Они находят уязвимости в системе и используют их для вредоносных действий (спам, зомби-сети, фишинг, SEO-манипуляции и так далее). Решение — систематическое обновление WordPress и его плагинов, ведь при каждом из них разработчики стараются исправить все найденные уязвимости.
PHP-код WordPress иногда называют устаревшим, но с ним можно эффективно работать, если изучить кодекс WordPress, который уже упоминался выше. Если ему следовать, то проблемных ситуаций быть не должно. Новичкам можно начать вот с этой страницы.
Таксономии — атрибуты находящихся на сайте записей. Это свойства товаров, постов или другого контента на вашем ресурсе. Таксономии привязываются к записи в одной таблице, и чтобы посмотреть значение определенного атрибута, система перебирает всю таблицу полностью. Если у вас на сайте два десятка записей — проблем не возникнет. Но если позиций 25 000 и у каждой по 50 атрибутов — то это в сумме 1 250 000 таксономий. Это чрезвычайно влияет на производительность — в этом и есть основное ограничение использования WordPress на крупных сайтах (например, если у вас онлайн-магазин, в котором 25 000 товаров с разными свойствами).
Это распространенная проблема начинающих разработчиков. Коммерческие разработчики создают плагины и шаблоны с упором на универсальность, стараясь сделать их способными решить максимальное количество различных задач. Но много — это не всегда хорошо. Лишняя функциональность зачастую тормозит процесс обработки данных и влияет на производительность.
Еще одна проблема экосистемы вокруг WordPress, которая ударяет по репутации и самой платформы, — это уровень исполнителей с бирж фриланса, к которым часто обращаются заказчики в поисках недорогого решения проблемы.
«За символические деньги анонимные спецы навешают на ваш сайт пару-тройку плагинов оптимизации, а затем покажут несколько красивых диаграмм из тестов, чтобы вы удостоверились, что проблема якобы решена. Вы и не догадаетесь, что основные причины снижения скорости никуда не делись», — утверждает Павел Устинов.
После такой оптимизации, по его словам, есть риск получить сайт, обвешанный новыми плагинами, с кучей «мусора» в коде и высокой нагрузкой на сервер.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…