Воркер обхода выглядит просто: взял адрес, запросил, следующий. Но в деталях — куда отправлять запрос, с какими заголовками, сколько успевать за прогон — сидит половина проблем, которые мы ловили на живых сайтах.

Это тридцатая часть цикла «Кэш страниц без MISS».

Не через публичный домен

Запрос на публичный адрес сайта идёт наружу и обратно: DNS, внешний балансировщик, TLS. Медленно и зависит от того, что творится снаружи. Обходчик отправляет запросы прямо в nginx своего сайта по внутренней сети, а сайтом представляется заголовками:

wp_remote_get('http://' . NGINX_INTERNAL . $path, [
    'headers' => [
        'Host'              => cache_site_host(),  // канонический домен, см. 25-ю часть
        'X-Forwarded-Proto' => 'https',
        'User-Agent'        => $ua,
    ],
    'redirection' => 0,
    'timeout'     => 15,
]);
  • Host — канонический домен: он входит в ключ кэша, иначе прогреются не те ячейки;
  • X-Forwarded-Proto: https — без него WordPress решит, что запрос пришёл по http, соберёт http-ссылки, и в кэш ляжет страница со смешанным содержимым;
  • redirection = 0 — редирект не следовать, а записать (двадцать восьмая часть).

Точное имя контейнера. Если на сервере несколько сайтов в общей docker-сети, имя «nginx» может разрешиться в чужой стек. Обходчик тогда честно греет кэш соседа. Указывайте точное имя контейнера своего nginx.

Параметры прогона

ПараметрЗначениеЗачем
бюджет прогона15 адресов × 2 User-Agentтелефон и компьютер — разные ячейки
обрыв по времени50 спрогон не должен жить дольше минуты крона
недогретоев голову очерединачать с него в следующем прогоне
замок3 минутыдва прогона не идут параллельно
потолок очереди3000 адресовзащита от разрастания
круграз в сутки + по сигналу сбросастраховка от вытеснения

Если прогон упёрся в замок — он перепланирует себя. Иначе очередь может встать навсегда; это отдельная история, тридцать пятая часть.

Прогрев работает, а страницы всё равно холодные?

Пришлите адрес — проверю, куда и с какими заголовками ходит ваш обходчик.

· полезно?
АЧ
Алексей Чикун веб-разработчик, команда TRIOHEAD

Делаю сайты и сервисы целиком: от вёрстки до сервера. Пишу о том, что проверил на своих проектах.

Комментарии

// загружаю комментарии…

Комментарии публикуются после проверки. Ссылки и HTML не принимаются.