Хостинг и плагины WordPress

Делаем WordPress быстрым и безопасным: чек-лист производительности и плагинов

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

WordPress хорош ровно настолько, насколько хороша система, на которой он работает

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

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

Кэширование на сервере, а не только в плагине

Главным инструментом для ускорения WordPress для большинства визитов является отказ от запуска WordPress вообще. Стандартный запрос запускает WordPress, выполняет ваши плагины и отправляет запросы к базе данных, прежде чем будет отправлен хотя бы один байт; кэш всей страницы выдает готовую страницу прямо с веб-сервера при следующем запросе, минуя весь этот процесс запуска. Место хранения этого кэша имеет значение: плагин кэширования находится внутри PHP, поэтому PHP все равно запускается до того, как кэш сможет ответить, в то время как кэш на уровне сервера отвечает раньше в ходе запроса и хранит страницы в виде, который сервер может выгрузить мгновенно.

Каждый сайт WordPress на нашем хостинге работает на LiteSpeed Enterprise с кэшированием LSCache на уровне сервера, а наш собственный плагин кэширования настраивает связь с ним «из коробки» — он предустановлен и обновляется автоматически, поэтому вам на одну вещь меньше нужно настраивать или поддерживать в актуальном состоянии. На серверах не от LiteSpeed тот же плагин просто не выдает заголовки полностраничного кэша и не вмешивается в работу, пока объектный кэш продолжает функционировать, благодаря чему перенесенный сайт никогда не остается наполовину настроенным. Практическое правило для вашего чек-листа: один полностраничный кэш на уровне сервера, и не устанавливайте второй плагин кэширования поверх первого — они будут конфликтовать.

Объектный кэш и база данных

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

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

Плагины, которые стоит использовать, и те, которые заменяет платформа

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

То, что стоит запускать — это небольшой набор, добавляющий реальные возможности: плагины, которые действительно нужны вашему сайту для работы, и — на нашей платформе — два плагина репозиторного уровня, которые мы создаем и поставляем с каждым сайтом. Наш плагин кэширования подключает WordPress к серверному кэшу и управляет умной очисткой, чтобы правка очищала только те страницы, которые нужно. Наш плагин footprint удаляет признаки, которые транслирует установка WordPress по умолчанию — версию и тег генератора, эндпоинты обнаружения, XML-RPC, пингбеки и заголовок powered-by — при каждом деплое, поэтому обновление плагина или темы не сможет незаметно вернуть их обратно. Оба плагина созданы по стандартам каталога плагинов WordPress.org, бесплатны и обновляются самостоятельно.

Поддержание WordPress в актуальном и безопасном состоянии

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

Помимо этого, рассчитывайте на то, что ограничения будут соблюдаться за вас: сканирование на вредоносное ПО по умолчанию, чтобы заражение было пресечено, а не обнаружено посетителем; изоляция, чтобы один взломанный сайт не мог получить доступ к другому; защита от DDoS на периферии и TLS повсеместно с автоматически продлеваемыми сертификатами. Ничто из этого не заменяет базовую гигиену — надежные учетные данные, принцип минимальных привилегий, удаление неиспользуемых плагинов — но это гарантирует, что инфраструктура не станет слабым звеном. В вашем контрольном списке вопрос к любому хостингу прост: является ли безопасность нормой по умолчанию или платной услугой?

WooCommerce и страницы, которые запрещено кэшировать

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

Способ совместить оба варианта — кэшировать страницу и оставлять незакэшированными только динамические элементы. Технология Edge Side Includes отображает фрагмент корзины, итоговую сумму мини-корзины и состояние аккаунта для каждого запроса, в то время как остальная часть страницы загружается из кэша. Страницы корзины, оформления заказа, личного кабинета, а также любые страницы с nonce или сессиями по умолчанию исключаются. За актуальность данных отвечает умная автоматическая очистка кэша, которая срабатывает при изменении товара, цены или заказа, поэтому устаревшие цены исключены. Если вы используете WooCommerce, это именно тот пункт контрольного списка, который нужно настроить безупречно: быстрый магазин из кэша, актуальная корзина для каждого пользователя и полное отсутствие кэширования персональных данных.

Часто задаваемые вопросы

Нужен ли мне по-прежнему плагин кэширования, такой как WP Rocket?

Нет. Полностраничное кеширование обрабатывается на уровне веб-сервера с помощью LSCache от LiteSpeed, наш собственный плагин кеширования связывает с ним WordPress и управляет интеллектуальной очисткой, а за ним располагается объектный кеш Redis для каждого сайта. Добавление второго плагина полностраничного кеширования поверх обычно конфликтует с кешем на уровне сервера, а не помогает, поэтому он не нужен и не рекомендуется.

Какие плагины платформа делает ненужными?

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

Сломает ли кэширование мою корзину WooCommerce или страницы авторизованных пользователей?

Нет. Страницы корзины, оформления заказа, личного кабинета (my-account), а также любые страницы с nonces или сессиями по умолчанию исключаются из кэша, а Edge Side Includes поддерживают фрагмент корзины и итоговые суммы в актуальном состоянии на остальных кэшированных страницах. Покупатели всегда видят собственную корзину и работающее оформление заказа, в то время как витрина продолжает загружаться из кэша, а интеллектуальное автоочищение удаляет из кэша затрагиваемые страницы при изменении товара, цены или заказа.

Как вы обеспечиваете безопасность WordPress без моего участия?

Мы обновляем стек под WordPress, делаем установку обновлений ядра и плагинов безопасной благодаря тестовым сайтам и восстановлению в один клик, по умолчанию выполняем сканирование на вредоносное ПО и защиту от DDoS, изолируем каждый сайт, чтобы одно заражение не могло распространиться, а также автоматически выпускаем и продлеваем TLS-сертификаты. Это исключает инфраструктуру как слабое звено; однако базовые правила гигиены, такие как надежные учетные данные и удаление неиспользуемых плагинов, по-прежнему остаются вашей задачей.

Попробуйте бесплатно в течение 14 дней

Запустите свои первые сайты бесплатно на 14 дней — без банковской карты. Переносите существующий сайт или сеть? Первая миграция за наш счет.

Начать бесплатно