Как Google обрабатывает JavaScript во время индексации



Есть несколько мифов по поводу того, как Google индексирует SPA-приложения. Например, что боты-краулеры не умеют в JavaScript совсем. Или что для обхода сайтов Google использует древние версии Chrome. И другие.



Беда в том, что у Google нет ни одной полной странички с документацией, как именно поисковик обходит сайты и как краулеры эти самые сайты загружают, обрабатывают и индексируют. И даже та документация, что есть, не даёт полного понимания, что сделать, чтобы бот точно всё распарсил правильно. Оно и понятно: зная точную механику, можно стать повелителем SEO.



Vercel вместе с MERJ провели эксперимент, обложив 100000 запросов от гуглобота разными замерами. Как именно они это сделали, лучше посмотреть в статье, есть даже примеры кода. И получили они такие знания:



1. Googlebot отлично справляется с любым JavaScript. Синхронным, асинхронным, из фреймворков.



2. Рендерит он только страницы с HTTP-кодами 200 и 304. Остальные коды не рендерит в принципе. Поэтому не забывайте отправлять корректные коды ошибок на страницы, это влияет на позиции в выдаче.



3. Googlebot умеет находить ссылки внутри JavaScript, не только в HTML. Причём смотрит он именно на готовые ссылки, не encoded URL.



4. Наличие sitemap.xml значительно ускоряет обработку ботом, что изменилось на сайте. То есть если вы боретесь за актуальность ссылок в поисковой выдаче, на sitemap.xml надо обратить внимание в первую очередь.



5. Метатег noindex работает. Но только если он пришёл в HTML, а не вставился при помощи JavaScript уже на клиенте. Если вы прячете странички от индексации уже на клиенте — это не работает, нужно уносить логику на сервер.



6. Тяжёлые страницы с большим количеством JavaScript краулятся медленнее, могут долго висеть в очереди. Поэтому перфоманс страницы всё-таки влияет на SEO.



7. Если в robots.txt запретить нечаянно доступ к папкам со скриптами и другими ассетами, они не загрузятся. Проверьте свой robots.txt, нет ли там чего-нибудь лишнего.



Понятно, что по сути это снепшот текущего состояния краулинга, который основан на предположениях и выводах из корреляции. Но всё равно это лучше, чем ничего. Как минимум можно не бояться, что JavaScript у поисковика не работает, и ради этого пилить отдельные версии сайта.



https://vercel.com/blog/how-google-handles-javascript-throughout-the-indexing-process