В любой документации приводится пример внедрения json-ld в исходный код страницы. Вижу в этом ряд проблем:
- для генерации разметки требуется затратить определенное время и ресурсы, которые не хотелось бы задействовать при первоначальном рендере;
- ок, можно заранее генерировать разметку, чтобы потом вставлять уже готовый код, но если он большой - это выливается в лишний трафик и время загрузки страницы.
Правильным решением, на мой взгляд, является генерация статических файлов, которые бы подключались асинхронно после первого рендера, и за отдачу которых отвечал бы nginx. В принципе Google такое
поддерживает, а вот про Яндекс подобной информации не нашел.
Для наглядности:
- Рабочий вариант, но с проблемами
<script type="application/ld+json">{json-ld}</script>
- Такое поисковик не поймет
<link href="path_to/json_ld_file" type="application/ld+json">
- Предлагаемое решение (догружать содержимое подготовленного файла):
const xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
const script = document.createElement('script');
script.type = 'application/ld+json';
script.innerText = xhr.response;
document.head.appendChild(script);
}
};
xhr.send();
Да, инструменты проверки разметки (
google и
yandex) динамическое ее добавление не понимают, но при этом в search-консоли она появляется.
Проверить для Яндекс пока не могу, жду индексации.
Кто-то уже задавался подобным вопросом? Есть ли у вас ответ по поводу Яндекса?