Surge: статический кэш страниц без настроек
Что такое Surge
Заголовок раздела «Что такое Surge»Surge — минималистичный плагин страничного кэширования от Konstantin Kovshenin (core contributor WordPress, ex-Automattic). Генерирует статические HTML-файлы и отдаёт их в обход PHP-цикла WordPress — это ускоряет TTFB и снимает нагрузку с сервера.
Ключевая особенность: у плагина нет экрана настроек. Он работает из коробки на любом корректно сконфигурированном хостинге. Кэш хранится на диске и автоматически инвалидируется при обновлении контента.
В нагрузочных тестах Surge держит 1000–2500 запросов в секунду при 100 одновременных соединениях на одноядерном VPS с 1 ГБ RAM — это в 70+ раз быстрее стокового WordPress.
Требования: WordPress 5.7+, PHP 7.3+, протестирован вплоть до WordPress 7.0. Лицензия GPLv3, исходники на GitHub.
Установка
Заголовок раздела «Установка»Через админку: Плагины → Добавить новый → поиск «surge» → Установить → Активировать.
Через WP-CLI:
wp plugin install surge --activateПри активации плагин записывает drop-in advanced-cache.php в wp-content/ — WordPress подхватывает его на ранней стадии загрузки и отдаёт статический HTML ещё до инициализации ядра. При деактивации drop-in удаляется автоматически.
Управление через WP-CLI
Заголовок раздела «Управление через WP-CLI»Плагин ориентирован на разработчиков: основной интерфейс управления — WP-CLI, а не админка.
# Полная очистка кэшаwp surge flush
# Статус кэша (версия, количество файлов, состояние)wp surge statusАльтернатива wp surge flush — выключить и включить плагин (toggle activation).
Как проверить, что кэш работает
Заголовок раздела «Как проверить, что кэш работает»Три способа диагностики:
- Site Health — Инструменты → Здоровье сайта. Ошибки установки (например, проблемы с
advanced-cache.phpили правами на запись) отображаются там. - Заголовок
X-Cache— в ответе сервера видноHITилиMISS:
curl -I https://example.com/ | grep -i x-cache- Окно инкогнито — откройте сайт без авторизации: именно так выглядит закэшированная версия для анонимных посетителей.
Когда происходит cache miss
Заголовок раздела «Когда происходит cache miss»Surge не кэширует запрос в следующих случаях:
- вы авторизованы в WordPress;
- в браузере установлена уникальная cookie;
- в URL есть уникальный query-параметр (маркетинговые параметры —
utm_campaign,utm_sourceи подобные — игнорируются и кэшу не мешают); - метод запроса не GET и не HEAD.
Это стандартное поведение страничного кэша: персонализированный контент никогда не должен попадать в общий кэш.
Исключение страниц из кэша
Заголовок раздела «Исключение страниц из кэша»Surge уважает стандартные HTTP-заголовки — отдельных настроек не нужно:
- Заголовок
Cache-Control: no-cache(илиmax-age=0) в ответе — страница не кэшируется. Большинство плагинов (WooCommerce, формы, личные кабинеты) отправляют этот заголовок сами. - Константа
DONOTCACHEPAGE— уважается с версии 1.0.5, работает так же, как в WP Super Cache и Batcache:
// В functions.php или плагине — отключить кэш для конкретного запросаif ( is_page( 'checkout' ) ) { define( 'DONOTCACHEPAGE', true );}Конфигурация через константы
Заголовок раздела «Конфигурация через константы»С версии 1.2.0 поддерживаются константы SURGE_* в wp-config.php для тонкой настройки без UI.
Единственный частый случай — хостинги, где функция fpassthru() отключена «по соображениям безопасности». Тогда включается альтернативный метод отдачи файлов:
// wp-config.php — для хостингов с отключённым fpassthru()define( 'SURGE_FPASSTHRU_ALT', true );Multisite и события
Заголовок раздела «Multisite и события»- Multisite — совместимость улучшена в 1.1.0, плагин работает в сети сайтов.
- Events system (1.1.0+) — внутренний механизм событий с поддержкой
s-maxageиstale-while-revalidateдля гранулярного контроля свежести кэша. В 1.2.0 в события добавлен статус кэша.
Surge vs другие плагины кэширования
Заголовок раздела «Surge vs другие плагины кэширования»| Критерий | Surge | WP Super Cache | WP Rocket |
|---|---|---|---|
| Цена | Бесплатный | Бесплатный | Премиум |
| Настройки | Нет (zero-config) | Много | Много + автоматика |
| Управление | WP-CLI | Админка | Админка |
| Оптимизация фронтенда | Нет | Нет | Да (минификация, lazy load, CDN) |
| Для кого | Разработчики | Все | Все |
Когда выбирать Surge:
- VPS или dedicated, где вы управляете сервером сами и не нужен «комбайн» оптимизации;
- highload-проект, где важна максимальная отдача статики без оверхеда;
- инфраструктура как код — настройка через константы и WP-CLI вписывается в CI/CD;
- frontend-оптимизация уже решена другими средствами (тема, CDN, серверная минификация).
Когда НЕ выбирать Surge: shared-хостинг с сильно урезанными PHP-функциями, или когда нужны минификация, lazy load и preload из коробки — это территория WP Rocket.
Полное сравнение всех плагинов страничного кэша: Кэширование страниц в WordPress.
Совместимость с WooCommerce
Заголовок раздела «Совместимость с WooCommerce»WooCommerce сам отправляет Cache-Control: no-cache для Cart, Checkout и My Account — Surge уважает эти заголовки и не кэширует динамические страницы автоматически. Дополнительная настройка не требуется, но поведение стоит проверить через X-Cache после установки. Подробнее: Кэширование в WooCommerce.
Материалы и источники
Заголовок раздела «Материалы и источники»- Surge на WordPress.org
- kovshenin/surge на GitHub — README, changelog, исходники
- Кеширование WordPress: WP Super Cache, WP Rocket, Surge — обзорная статья WPCraft
- Кэширование страниц в WordPress — сравнение всех плагинов страничного кэша