После изучения функционала IndexNow я согласен, что это должно стать одной из ключевых функций/плагинов. Я также понимаю, что ресурсы разработчиков ограничены.
Ниже представлены мои мысли относительно необходимого плагина для поддержки основной команды. Пожалуйста, не стесняйтесь добавлять свои комментарии.
Предположения:
- Плагин IndexNow будет использовать пакетные уведомления по расписанию — см. соображения по дизайну #1.
- Пакетные уведомления будут настроены с определенным временным интервалом.
- Уведомления будут отправляться только по публичным темам.
- Уведомления будут отправляться только для новых/измененных/удаленных тем, когда плагин активирован.
- Плагин не будет отправлять уведомления об исторических изменениях/событиях задним числом.
Инструкции для пользователей:
- Зарегистрируйтесь в выбранной поисковой системе IndexNow.
- Получите ваш API-ключ
- Получите URL конечной точки поисковой системы
- Установите плагин.
- Настройте административную панель.
Сценарий использования — Настройки администратора
- Предоставить пользователю возможность включать/отключать автоматическую отправку.
- Предоставить пользователю возможность ввести конечную точку поисковой системы IndexNow. См. соображения по дизайну #3.
- Поле ввода — текстовый параметр
- Поле ввода должно содержать корректный URL
- Значение по умолчанию — URL Bing: `https://www.bing.com/indexnow`
- Предоставить пользователю возможность ввести и сохранить API-ключ.
- Текстовое поле для хранения API-ключа
- Поле ввода принимает только буквенно-цифровые символы
- Значение по умолчанию — ""
- Предоставить пользователю возможность задать параметры расписания для пакетных уведомлений.
- Параметр времени задается в часах
- Поле ввода — строка для хранения значения часов
- Допустимые значения — целые числа
- Допустимый диапазон — от 1 до 24
- Значение по умолчанию — 12
Сценарий использования — Файл ключа
- Система создаст файл с именем
indexnowkey.txt. - Файл ключа должен быть размещен в корневом каталоге.
- Система заполнит файл API-ключом.
- Файл должен быть доступен для любых удаленных пользователей/систем через HTTP/HTTPS.
Сценарий использования — Планирование процесса пакетных уведомлений
- Система будет планировать выполнение задач с интервалом, определенным в настройках администратора.
- Значение интервала определяет задержку между запусками задач в часах. Например, значение 2 означает, что задача должна выполняться каждые 2 часа. Значение 4 — каждые 4 часа. Значение 24 — один раз в день.
Сценарий использования — Процесс пакетных уведомлений
- Система определит, активирован ли процесс уведомлений через настройки сайта в административной панели.
- Система проверит наличие корректного API-ключа в настройках сайта (отличного от “”).
- Система сформирует список тем на основе заданного временного интервала. См. соображения по дизайну #2 относительно временных рамок запроса. Критерии включения тем:
- Темы должны быть доступны только для публичного просмотра
- Новые темы
- Темы с новыми сообщениями
- Темы, в которых были отредактированы сообщения
- Удаленные темы
- Список тем должен быть уникальным — без дубликатов
- Система создаст JSON-пакет в следующем формате:
{
"host": "current_site",
"key": "api_key",
"keyLocation": "https://current_site/indexnowkey.txt",
"urlList": [
"https://www.example.com/url1",
"https://www.example.com/folder/url2",
"https://www.example.com/url3"
]
}
- JSON-пакет будет отправлен по следующему адресу:
- URL: `sitesettings.search_engine_indexnow_endpoint`
- JSON-пакет будет отправлен со следующими заголовками:
- Content-Type: application/json; charset=utf-8
- Http/1.1
- Host: bing
- Проверка подтверждения получения HTTP-запроса:
- HTTP 200 — успешная отправка — завершение процесса
- HTTP 429 — слишком много попыток отправки — отправить уведомление администратору о необходимости увеличить интервал времени
Соображения по дизайну:
- Пакетные уведомления против одиночных уведомлений — одиночные уведомления приемлемы для небольших доменов, но для крупных форумов отправка уведомления при каждом новом/обновленном сообщении может создать множество процессов событий. С точки зрения производительности индексации поисковыми системами, пакетные уведомления с часовым интервалом подходят для 80% форумов.
- Временные рамки запроса для пакетных уведомлений — SideKiq управляет интервалами времени. Если SideKiq занят выполнением тяжелых задач, процесс пакетных уведомлений может быть задержан. В результате процесс может пропустить новые/обновленные темы, если временной интервал запроса совпадает с интервалом планирования. Следует ли расширить временной параметр запроса, чтобы учесть задержки? Или возможно, чтобы планировщик передавал метки времени начала для контроля временных интервалов запроса? Или нам необходимо создать таблицу базы данных/значение для отправленных тем с меткой времени?
- Следует ли создать внутреннюю таблицу с каждой поисковой системой и соответствующим URL конечной точки IndexNow? Пользователь сможет выбирать из выпадающего списка вместо ручного ввода URL. Это исключит возможные ошибки пользователя.
Чего не хватает? Что бы вы добавили?