Внедрение протокола IndexNow позволяет быстро уведомлять поисковые системы о изменениях на сайте, что значительно ускоряет индексацию новых и обновленных страниц. Однако в WordPress-среде одной из распространенных проблем является взаимодействие IndexNow с кэшированием. Некорректная работа кэш-системы может привести к задержкам в отправке актуальных URL или даже к отправке устаревших страниц. В этой статье подробно разберём, как правильно организовать интеграцию IndexNow с популярными кэш-плагинами и решениями, чтобы повысить эффективность индексации.
Почему кэширование влияет на работу IndexNow в WordPress
Кэширование в WordPress служит для ускорения загрузки страниц, сохраняя их копии и выдавая готовый результат без повторной генерации. Но если сайт изменился, а кэш не обновился, IndexNow может получить устаревший URL или не заметить изменения вовсе. Это особенно актуально для динамических сайтов с частым обновлением контента.
Например, если кэш сохраняет старую версию страницы, а вы отправляете URL в IndexNow с помощью плагина или собственного решения, поисковик может проиндексировать неактуальную информацию. Чтобы избежать этого, интеграция с кэшированием должна учитывать очистку и обновление кэша при изменении контента.
Кроме того, некоторые кэш-плагины могут блокировать выполнение хук-событий WordPress, что мешает своевременному запуску отправки URL в IndexNow.
Как правильно настроить IndexNow с популярными кэш-плагинами
1. W3 Total Cache
W3 Total Cache — мощный кэш-плагин с множеством настроек. Для корректной работы с IndexNow важно:
- Включить очистку кэша при обновлении записи (пост, страница и т.д.).
- Добавить вызов функции отправки URL в IndexNow после успешной очистки кэша.
Пример интеграции с хуком очистки кэша:
function indexnow_send_url_after_cache_clear($post_id) {
if (get_post_status($post_id) !== 'publish') {
return;
}
$url = get_permalink($post_id);
indexnow_su_send_url($url);
}
add_action('w3tc_purge_post', 'indexnow_send_url_after_cache_clear');В этом коде мы используем хук w3tc_purge_post, который вызывается при очистке кэша конкретной записи. Функция indexnow_su_send_url — пример пользовательской функции отправки URL в IndexNow (код функции представлен ниже).
2. WP Super Cache
WP Super Cache также кэширует страницы и требует аналогичной настройки. Здесь можно использовать хук wp_cache_post_change для отправки URL после обновления поста и очистки кэша.
function indexnow_su_send_url_after_wpsc($post_id) {
if (get_post_status($post_id) !== 'publish') {
return;
}
$url = get_permalink($post_id);
indexnow_su_send_url($url);
}
add_action('wp_cache_post_change', 'indexnow_su_send_url_after_wpsc');3. LiteSpeed Cache
LiteSpeed Cache имеет собственные хуки для очистки кэша. Например, хук litespeed_purge_post срабатывает при очистке кэша записи. Аналогично подключаем функцию отправки URL:
function indexnow_su_send_url_after_lscache($post_id) {
if (get_post_status($post_id) !== 'publish') {
return;
}
$url = get_permalink($post_id);
indexnow_su_send_url($url);
}
add_action('litespeed_purge_post', 'indexnow_su_send_url_after_lscache');Реализация функции отправки URL в IndexNow
Для отправки URL к API IndexNow необходим простой POST-запрос с JSON-данными. Ниже приведён пример функции indexnow_su_send_url с базовой обработкой ошибок и логированием.
function indexnow_su_send_url($url) {
$api_key = 'ВАШ_КЛЮЧ_INDEXNOW';
$endpoint = 'https://api.indexnow.org/indexnow';
$body = json_encode([
'host' => parse_url(home_url(), PHP_URL_HOST),
'key' => $api_key,
'keyLocation' => home_url('/indexnow-key.txt'),
'urlList' => [$url],
]);
$args = [
'body' => $body,
'headers' => [
'Content-Type' => 'application/json'
],
'timeout' => 10,
];
$response = wp_remote_post($endpoint, $args);
if (is_wp_error($response)) {
error_log('IndexNow: ошибка отправки URL ' . $url . ' - ' . $response->get_error_message());
return false;
}
$code = wp_remote_retrieve_response_code($response);
if ($code !== 200) {
error_log('IndexNow: неверный код ответа ' . $code . ' для URL ' . $url);
return false;
}
error_log('IndexNow: успешно отправлен URL ' . $url);
return true;
}Эту функцию можно доработать, например, интегрировать с плагином Clearfy Pro для централизованного управления оптимизацией и очисткой кэша.
Общие рекомендации по работе с кэшированием и IndexNow
1. Очистка кэша при обновлении контента. Каждый раз при публикации или обновлении записи очищайте кэш, чтобы поисковики получали актуальные данные.
2. Отложенная отправка URL. Если кэш долго очищается или используется CDN, имеет смысл добавить небольшую задержку перед отправкой URL в IndexNow, чтобы убедиться, что изменения уже доступны.
3. Логирование и мониторинг. Ведите логи отправки URL, чтобы отслеживать ошибки и своевременно их исправлять.
4. Использование хуков WordPress. Для интеграции используйте стандартные хуки, связанные с изменением контента (save_post, transition_post_status) и очисткой кэша у конкретного плагина.
Заключение по теме интеграции IndexNow с кэшированием
Корректная работа протокола IndexNow в WordPress невозможна без учёта специфики кэширования. При правильной настройке отправка URL будет своевременной и эффективной, что улучшит индексацию и видимость сайта. Использование приведённых выше примеров и рекомендаций поможет избежать распространённых ошибок и сделать процесс максимально автоматизированным.