Почему мы перешли с WordPress на статический сайт
Этот блог вы читаете на статике. А год назад здесь крутился WordPress - 15 плагинов, PHP, база данных MariaDB и 254 МБ в одной только папке wp-content. Для блога, где выходит несколько статей в месяц, это оказалось как грузовик ради поездки за хлебом.
Расскажу, почему мы всё снесли и переехали на Astro - и что из этого вышло в цифрах.
Чем не угодил WordPress
WordPress - отличная штука, если вам нужны комментарии, формы, личные кабинеты, плагин под каждое движение. Нам не нужно было ничего из этого. Мы публикуем текст. А платить приходилось за всё сразу.
Безопасность. WordPress - самая атакуемая CMS в мире просто потому, что её больше всего. Боты долбят wp-login.php круглосуточно, дыра в любом из 15 плагинов - и твой сервер уже майнит чужие монеты. Каждый плагин это ещё один чужой код, которому ты по факту выдал ключи от дома.
Ресурсы. PHP и MySQL висят в памяти всегда, даже когда на сайте ноль посетителей. Около 300 МБ RAM заняты под сам факт существования блога. На домашнем сервере, где каждый мегабайт под счётом, это раздражает.
Скорость. Каждый запрос - это PHP собирает страницу из базы, прогоняет через тему и плагины и только потом отдаёт. Кеширование помогает, но ты лечишь симптом: кешируешь то, что вообще не должно генерироваться на лету.
Обновления. Ядро, тема, плагины обновляются каждый месяц, и каждое обновление это шанс что-то сломать. Контентный блог не должен требовать обслуживания как боевой сервер.
Почему Astro
Astro - генератор статических сайтов. Идея простая: страницы собираются один раз при сборке, на выходе чистый HTML, который nginx отдаёт как обычный файл. Никакого PHP в рантайме, никакой базы данных.
Что зашло:
- Zero JS по умолчанию - на страницу не едет ни байта скрипта, пока он реально не нужен.
- Контент в Markdown - статьи это просто текстовые файлы в git. Версионирование, история правок, откат - всё бесплатно.
- Поиск через Pagefind - индекс собирается при сборке и работает на клиенте, серверу база не нужна.
Статью я пишу в Markdown, делаю git commit, запускаю deploy.sh - он гоняет astro build, собирает индекс поиска и перезагружает nginx. Полминуты, и новый текст в проде. Без админки, без визуального редактора, без «сохранить черновик в базу».
Что показали цифры
| Метрика | WordPress | Astro + nginx |
|---|---|---|
| Lighthouse Performance | 62 | 98 |
| Время загрузки | 2,8 с | 0,4 с |
| Потребление RAM | ~300 МБ | ~5 МБ |
| Поверхность атаки | высокая | минимальная |
5 МБ против 300 - это nginx, отдающий статику. Он держал бы этот блог даже на самом дохлом VPS и не вспотел.
Честно: что мы потеряли
Переезд на статику - это размен, и кое-что осталось на той стороне.
Комментарии под статьями теперь не из коробки: захотим - подключим внешний сервис. Визуальной админки нет, правки идут через редактор и git - для нас это плюс, но подойдёт не каждому. А динамику вроде форм, личных кабинетов и корзины на чистой статике не сделать: под такое WordPress или нормальный бэкенд остаются правильным выбором.
Для контентного блога ничего из этого не больно. Наша задача - отдавать текст, и теперь мы отдаём его быстро, дёшево и без дыр.
Зачем это вам
Если у вас блог или лендинг на WordPress, а используете вы от силы десятую часть его возможностей - посчитайте, во что обходится остальное. Скорее всего, статика закроет ваши задачи за копейки ресурсов и заодно снимет головную боль с безопасностью.
Мы в PuraMind так и строим инфраструктуру: берём минимальный инструмент, который решает задачу, без лишних слоёв сверху. Расскажите про свой проект - посмотрим, что подойдёт вам.