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

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

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

WordPress работает настолько хорошо, насколько хороша среда, в которой он запущен

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

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

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

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

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

Кэш объектов и база данных

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

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

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

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

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

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

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

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

WooCommerce и страницы, которые ни в коем случае нельзя кэшировать

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

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

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

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

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

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

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

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

Нет. Корзина, оформление заказа, личный кабинет и любые страницы nonce или сессий по умолчанию исключены из кэша, а Edge Side Includes сохраняет фрагмент корзины и итоговые суммы актуальными на кэшируемых в остальном страницах. Покупатели всегда видят свою собственную корзину и рабочую страницу оформления заказа, пока витрина магазина по-прежнему загружается из кэша, а умная автоматическая очистка удаляет затронутые страницы при изменении товара, цены или заказа.

Как вы обеспечиваете безопасность WordPress без необходимости управлять им с моей стороны?

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

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

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

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