KakapoWP KakapoWP
Справочный центр/Performance/Настройка прогрева кеша

Настройка прогрева кеша

Относится к: Kakapo Performance· 4 мин чтения

Сначала измерить: работает ли самовызов?

Прогрев означает, что твой веб-сервер обращается к собственным страницам. Работает ли это у тебя, отвечает кнопка «Проверить самовызов»: она запрашивает именно главную страницу и сообщает код статуса, переданный объём и время ответа. Если возвращается HTTP 401 или 403, впереди обычно стоит блокировка доступа — Basic-Auth перед сайтом поэтапной подготовки или брандмауэр. Если тест упирается в своё ограничение в 10 секунд, сервер часто блокирует сам себя, потому что свободен всего один рабочий процесс PHP, а он уже занят твоим кликом. Попутно проверяются ещё два требования: кеш страниц должен быть включён, а каталог кеша — доступен веб-серверу для записи. Пока чего-то из этого нет, предпросмотр и запуск остаются отключёнными, а причина стоит открытым текстом ниже.

Откуда берутся адреса

Источников два. «Sitemap» покрывает весь сайт; без записи берётся /wp-sitemap.xml, Yoast и Rank Math кладут свою в /sitemap_index.xml. Индекс sitemap прослеживается на один уровень вглубь, максимум по 25 частичным sitemap. Вписать можно только адреса этого сайта, чужой хост отклоняется с сообщением об ошибке. Если не возвращается ни одного адреса, сообщение называет причину — самая частая: если в Настройки › Чтение стоит «Попросить поисковые системы не индексировать сайт», WordPress отключает свою sitemap и отдаёт вместо неё страницу 404, причём с кодом статуса 200. Кто смотрит только на код, примет это за успех. «Недавно изменённые материалы» обходятся без sitemap: главная страница, страница записей и последние отредактированные записи и страницы, по умолчанию 50, настраивается между 5 и 500. В повседневной работе это часто более подходящий источник, ведь то, что ты только что отредактировал, вылетело из кеша и будет вызвано следующим.

Читать предпросмотр

«Проверить очередь» только считает — до этого момента ничего не меняется. Сводка чётко разделяет: найденные адреса, дубликаты, адреса на чужих хостах, адреса, которые никогда не кешируются (с не более чем восемью примерами и обоснованием), адреса, которые уже свежими лежат в кеше. В самом низу стоит число, которое действительно было бы запрошено, а также первые двенадцать адресов для контроля. Если появляется строка «сверх верхней границы», остаток не помещается в один прогон: по умолчанию это 300 адресов, допустимо от 10 до 5000. Через «Объём» ты выбираешь между «только недостающие страницы» и «создать все заново». При повторном создании ничего не теряется — файл кеша при каждом обращении возникает сам собой. При запуске очередь, кстати, строится заново, а не берётся список из предпросмотра; между проверкой и кликом могут пройти минуты.

Порции, ограничения времени и кто движет прогон

Один шаг забирает по умолчанию 5 адресов (настраивается от 1 до 20) и передаёт управление не позже чем через 20 секунд, чтобы ни одно обращение не упёрлось в ограничение времени сервера. Для каждого адреса дополнительно действует собственное ограничение, по умолчанию 10 секунд, настраивается между 3 и 30; после этого адрес считается неудавшимся, и прогон идёт дальше. На слабом железе размер порции ставят ниже, а не выше: прогон тогда длится дольше, зато сайтом можно пользоваться параллельно. Шаги движет браузер, пока открыта страница управления, а затем WP-Cron — отдельным вызовом, которого не ждёт ни один посетитель. Если задана DISABLE_WP_CRON, после закрытия вкладки работа продолжится только тогда, когда на сервере настоящий cron вызывает wp-cron.php. Одновременно работает всегда только один шаг; блокировка на 120 секунд не даёт двум открытым вкладкам или браузеру и cron дважды забрать одни и те же адреса и посчитать цифры несколько раз. «Прервать» действует между двумя адресами, а не только в конце порции; уже созданные файлы кеша остаются действительными.

Читать результат и запускать прогоны автоматически

Каждый запрос заканчивается ровно одной из трёх строк. «Положено в кеш» означает: после запроса файл действительно оказался на месте — проверяется файловая система, а не код статуса. «Отдано, но не закешировано» означает: страница вернулась, но не была сохранена; тогда, как правило, срабатывает правило исключения кеша страниц, и проверять его нужно там, а не здесь. «Не удалось» — это превышения времени, коды ошибок и перенаправления; перенаправления сознательно не прослеживаются, ведь в sitemap должен стоять целевой адрес. Протокол хранит последние 40 запросов, таблица показывает из них 25 с адресом, кодом статуса, длительностью и результатом. Собственные запросы несут признак и поэтому не попадают в долю попаданий кеша — иначе статистика росла бы, хотя посетителю от этого ничего. Два переключателя запускают прогоны без тебя: после очистки кеша и по расписанию — ежечасно, дважды в день или ежедневно (по умолчанию ежедневно). Оба запускаются, только если выполнены все требования.

Эта статья оказалась полезной?