Является ли ваш сайт на WordPress масштабируемым?
Опубликовано: 2017-05-16Ваш сайт на WordPress масштабируется? Есть много примеров крупномасштабных установок WordPress в дикой природе. Например, WordPress.com - это огромная мультисайтовая установка, которая получает десятки миллионов просмотров страниц каждый месяц. Он также обслуживает тысячи пользователей в любой момент.
Другие примеры включают Time, TechCrunch и CNN. В этом нет никаких сомнений. Вы определенно можете создать масштабируемый веб-сайт с WordPress, который будет достаточно мощным, чтобы обрабатывать любой объем трафика, если вы создаете правильную среду. Настроить масштабируемую установку может быть сложно, но это выгодное вложение для любого владельца сайта. В этом посте мы рассмотрим несколько областей, на которых вы можете сосредоточиться, чтобы обеспечить масштабируемость, и дадим советы по настройке масштабируемой среды.
Что мы подразумеваем под масштабируемым?
Что делает веб-сайт WordPress масштабируемым? Масштабируемый веб-сайт WordPress может увеличивать емкость за счет увеличения или уменьшения масштаба.
- Масштабирование - увеличение мощности оборудования (больше ОЗУ, более мощный ЦП).
- Масштабирование - увеличьте емкость, добавив больше узлов (имея идентичные копии вашего сайта, распределенные между несколькими машинами).
Это дает вам гибкость, необходимую для роста. По сути, вы хотите иметь возможность расширять свой сайт без каких-либо проблем. С WordPress вам не придется беспокоиться о программном обеспечении. Ядро WordPress реализует соглашения о многоуровневой архитектуре программного обеспечения, такие как отделение разметки (HTML и CSS) от данных (база данных MySQL). Ниже мы рассмотрим некоторые способы обеспечения максимальной масштабируемости.
Среда разработки

Изображение предоставлено Sentavio / shutterstock.com
Одна из самых сложных частей масштабирования сайта WordPress - это настройка среды разработки. Хорошая среда разработки без проблем будет отражать производственную среду. Если у вас небольшой сайт, вы можете обойтись без разработки вживую, хотя он определенно не будет масштабироваться.
Вам понадобится какой-то контроль версий, чтобы разработчики не наступали друг другу на пятки. Программное обеспечение для контроля версий записывает изменения в файлы с течением времени, чтобы их можно было отозвать позже. Кроме того, это гораздо более эффективный и профессиональный способ разработки масштабируемого веб-сайта на WordPress.
Благодаря упорной работе сообщества разработчиков ПО с открытым исходным кодом доступно множество элегантных решений. Git - это программное обеспечение для распределенного контроля версий, которое позволяет нескольким разработчикам удаленно работать с отдельными репозиториями. Это надежный, быстрый и способный обрабатывать невероятно большие проекты. В конце концов, Git был создан Линусом Торвальдсом для разработки под Linux.
Вы можете создать потрясающую среду разработки с помощью VVV (Varying Vagrant Vagrants). Это бесплатное программное обеспечение с открытым исходным кодом идеально подходит для создания распределенных сред разработки с помощью WordPress. Ознакомьтесь с нашим полным руководством по настройке среды разработки WordPress, чтобы получить подробное руководство по этому вопросу. WordPress.org также предлагает полезное руководство по установке VVV.
Горизонтальная масштабируемость
Масштабирование или горизонтальное масштабирование - одна из важнейших концепций создания масштабируемой среды. Это позволяет запускать ваш сайт на многих разных машинах (серверах). Некоторые люди называют инфраструктуру «эластичной архитектурой», потому что количество имеющихся у вас ресурсов может увеличиваться или уменьшаться в зависимости от того, сколько вам нужно.
Это достигается с помощью таких методов облачных вычислений, как кластеризация, балансировка нагрузки и виртуализация. В информатике кластеризация - это процесс организации похожих объектов в группы. Итак, один кластер будет содержать файлы, базу данных и программное обеспечение вашего сайта. Кластеризация гарантирует высокую доступность вашего веб-сайта за счет устранения проблем, связанных с аппаратными и программными сбоями. Как это работает?
Если на вашем сайте наблюдается всплеск трафика, балансировщик нагрузки определит, как правильно выделить больше ресурсов, чтобы восполнить пробел за счет горизонтального масштабирования - это происходит динамически, и ваши посетители ничего не замечают. Идея состоит в том, что у вас есть идентичные копии вашего веб-сайта, распределенные между несколькими машинами, и все они знают друг о друге. Таким образом, компьютер в кластере всегда находится в режиме ожидания, если наблюдается увеличение трафика или отказ какого-либо компонента стека.
Сервисы облачного хостинга, такие как Amazon Web Services (AWS) или RackSpace, - два популярных провайдера облачного хостинга, которые обеспечивают горизонтальную масштабируемость. Ознакомьтесь с этим руководством по развертыванию высокодоступного веб-сайта WordPress с помощью AWS, чтобы увидеть пример типичной серверной инфраструктуры с эластичной архитектурой.
Кеширование
Кэш - это временное место для хранения памяти. Кэширование может помочь вам быстрее доставлять контент и избежать проблем с параллелизмом. Каждой CMS нужно какое-то кеширование, WordPress не исключение. Плохая новость в том, что кеширование может быть до смешного сложным. Хорошая новость заключается в том, что сообщество разработчиков ПО с открытым исходным кодом предложило множество различных решений по этому поводу. Есть множество инструментов, которые могут вам помочь, включая WP Super Cache и Batcache.

Кэширование обратного прокси (кэширование страницы)
Кэширование обратного прокси - это эффективный способ загрузки динамических веб-страниц. Обратный прокси-сервер - это сервис, который действует как посредник между WordPress и браузером. Это может помочь снизить нагрузку на ваш основной сервер и уменьшить воспринимаемое время загрузки страницы.
Проблема в том, что серверы PHP требуют больших ресурсов. Они выполняют большое количество сложных задач, которые могут затруднить работу вашего сервера. Вы можете уменьшить нагрузку на свой сервер, реализовав обратный прокси.
Например, предположим, что вы получили посетителя на главной странице вашего веб-сайта. Это первый визит за день. На данный момент кэшированной версии домашней страницы еще нет.
- Пользователь вводит URL-адрес в адресную строку, запрашивая страницу с сервера.
- Запрос проходит через прокси-сервер, у которого еще нет кешированной версии страницы, в WordPress.
- WordPress генерирует домашнюю страницу и отправляет ответ обратному прокси.
- Затем прокси отправляет ответ браузеру и сохраняет кешированную копию этой страницы.
- Пока есть кеш, любой пользователь, запрашивающий эту страницу, получит кешированную версию страницы.
Кэширование объектов
Концепция кэширования объектов аналогична кэшированию страниц, за исключением того, что она работает с отдельными объектами. Многие проблемы с параллелизмом могут возникнуть, когда на ваш сайт вошло много пользователей. Кэширование объектов сохраняет объект приложения (например, видео, изображение, документ) в хранилище данных. Кэшируя объекты приложения, вы меньше зависите от базы данных, освобождая много памяти.
Есть много вариантов кеширования. Сети доставки контента, такие как Cloudflare, Akamai, EdgeCast и KeyCDN, могут действовать как массивные обратные прокси. Varnish и WP Super Cache - два популярных варианта реализации кеширования с помощью WordPress.
Производительность запроса

Изображение Олега Ерина / shutterstock.com
База данных часто может быть причиной наихудших узких мест. Медленные запросы могут заблокировать приложение PHP на вашем сервере и остановить все действия, даже если у вас эластичная архитектура. Как я упоминал ранее, серверы PHP могут значительно замедлить работу сервера. Если кэширование не выполняет свою работу, вы можете найти способы улучшить производительность запросов, определив медленные запросы.
Медленные запросы возникают из-за проблем с базой данных SQL, сетью, в которой работает ваш сайт, или сервером. Это может происходить по разным причинам. Определенно не существует универсальных решений для всех. Первый шаг к повышению производительности запросов - выявление медленных запросов.
Как только вы определите проблему, вы можете действовать. Иногда ответ может быть таким же простым, как покупка большей пропускной способности, в других случаях вам может потребоваться настроить код, что может оказаться сложным.
Ознакомьтесь с плагином WordPress Query Monitor, если вы ищете инструмент для отслеживания запросов.
Улучшение поиска
Если у вас много сообщений, скажем, 1 миллион, вам нужно помнить о том, как настроены ваши базы данных. Большинство крупных сайтов имеют оптимизированный поисковый индекс. Это настраиваемая поисковая система, добавленная в WordPress.
Поисковый запрос контента в WordPress не работает, если на вашем сайте много сообщений. Также оставляет желать лучшего в плане скорости. Обычное решение этой проблемы - создать специальный поисковый индекс. В результате эти запросы не попадают в базу данных, что дает пользователям лучший опыт просмотра, а также повышает производительность вашей базы данных.
Популярные поисковые системы для крупномасштабных сайтов WordPress включают ElasticSearch и ApacheSolr.
Заключение
Также важно начинать с правильного масштаба. Начните с простого, а потом оптимизируйте. По словам Дональда Кнута, «преждевременная оптимизация - корень всех зол». Приспосабливайтесь к росту, но не пытайтесь сжать огромный сайт электронной коммерции на крошечной основе или наоборот. Возможно, вам не понадобится создавать масштабируемый сайт, если он предназначен для чего-то простого, например, страницы событий.
Обычно эластичная архитектура является стандартом для веб-сайтов электронной коммерции. Хотя некоторые из этих вещей могут показаться невероятно сложными, вам не обязательно все это понимать. Если вы разбираетесь в основах, вы можете создать надежную среду для крупномасштабного сайта. Все, что вам нужно сделать, это найти подходящие облачные сервисы и подключиться к нужному CDN.
Не стесняйтесь делиться своим опытом в разделе комментариев. Какие шаги вы предприняли, чтобы сделать свой сайт на WordPress масштабируемым?
Миниатюра статьи: turbodesign / shutterstock.com
