Перейти к содержимому

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 surge flush
# Статус кэша (версия, количество файлов, состояние)
wp surge status

Альтернатива wp surge flush — выключить и включить плагин (toggle activation).

Три способа диагностики:

  1. Site HealthИнструменты → Здоровье сайта. Ошибки установки (например, проблемы с advanced-cache.php или правами на запись) отображаются там.
  2. Заголовок X-Cache — в ответе сервера видно HIT или MISS:
Окно терминала
curl -I https://example.com/ | grep -i x-cache
  1. Окно инкогнито — откройте сайт без авторизации: именно так выглядит закэшированная версия для анонимных посетителей.

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 — совместимость улучшена в 1.1.0, плагин работает в сети сайтов.
  • Events system (1.1.0+) — внутренний механизм событий с поддержкой s-maxage и stale-while-revalidate для гранулярного контроля свежести кэша. В 1.2.0 в события добавлен статус кэша.
КритерийSurgeWP Super CacheWP 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 сам отправляет Cache-Control: no-cache для Cart, Checkout и My Account — Surge уважает эти заголовки и не кэширует динамические страницы автоматически. Дополнительная настройка не требуется, но поведение стоит проверить через X-Cache после установки. Подробнее: Кэширование в WooCommerce.