Небольшой кейс от немецкого разработчика David Künnen. Работая над своим проектом Devsnap, он совершил несколько наивных ошибок, но в итоге нашел эффективный способ быстрой индексации сайтов на JavaScript.
При создании площадки Devsnap, David работал через Create React App на языке Go с GraphQL. В финале работы ожидался классический SPA-сайт с клиентским рендерингом. Перед Google стояла грандиозная работа. Поисковику предстояло проиндексировать около 250 тысяч страниц сайта. Вебмастер не особо переживал. Всем известно, что поисковик прекрасно справляется с JavaScript и проблем быть не должно.
Работа началась и кривая трафика медленно поползла вверх. Сперва дело шло хорошо. Google индексировал по 2 страницы в минуту. David полагал, что поисковик в ближайшем будущем ускорится, но Google даже и не думал наращивать темпы.
Остановившись на 20 000 страниц, индексация и вовсе прекратилась. Вебмастер решил внедрить SSR.
1. Серверный рендеринг
Улучшения начались с изучения мануала. David посоветовался с seo-шниками и решил использовать серверный рендеринг. Он позволял проиндексировать площадку дважды: сперва Googlebot смотрит на первоначальный HTML, находит ссылки и переходит по ним. Далее контент отправляется рендереру, который получает заключительный HTML.
Для Google это дешево, но процесс идет очень медленно. Мануал позволил поисковику сразу увидеть нужные ссылке в коде. В итоге результаты подросли.
Показатели остановились на уровне 100 000 страниц. Остальные 150 000 Google индексировать не спешил.
2. Sitemap
David не унывал и решил внедрить динамический Sitemap. Этот шаг мог позволить Google индексировать страницы еще быстрее. Вебмастер внедрил маленький скрипт на Go, генерирующий sitemap.xml два раза в день. Размер сайтмапов был ограничен 50 урлами, поэтому пришлось делать несколько карт и добавлять в них только релевантные страницы.
После внедрения сайтмапов, Google стал индексировать по 10 страниц в минуту. Этого также было мало.
3. Корень проблемы: JavaScript
Вебмастер решил разобрать проблему по полочкам. Почему площадка индексировалась так медленно? Существует множество подобных ресурсов, с которыми Google легко справляется. Для индексации любого сайта Google выделяет ограниченные ресурсы. Сканирование Devsnap получилось слишком дорогой для поисковика. Google распознавал все ссылки в начальном HTML, при этом все так же отправляя материалы в рендерер для окончательной проверки. Из-за JavaScript поисковик просто не знает, что все ссылки точно есть в начальном HTML. David удалил JavaScript полностью, чтобы боты его не видели.
Сразу после этого Google сошел с ума. Поисковик начал индексировать по 10 страниц в секунду.
Через день после изменения результаты значительно выросли. Трафик пополз вверх.
Google проиндексировал все 250 000 страниц.
Вывод
При индексации огромного ресурса выгоднее отдавать поисковому боту сразу же финальный HTML. Смело удаляем JavaScript, при этом оставив, Schema-JS.
Источник