Может ли Google сканировать контент JavaScript? Конечно.
Но сканирует ли он содержимое JavaScript так же, как HTML? Не далеко. Я только что провел эксперимент, который это демонстрирует.
Результат: Google требовалось в 9 раз больше времени для сканирования страниц JavaScript по сравнению с обычными страницами HTML.
Это свидетельствует о существовании очередь рендеринга в конвейере индексации Google и показывает, как ожидание в этой очереди может резко повлиять на скорость сканирования и индексации вашего контента.
И это еще одна причина поместить как можно больше вашего контента в обычный HTML.
Эксперимент
Я хотел проверить, сколько времени потребуется Google для сканирования набора страниц с содержимым JavaScript по сравнению с обычными HTML-страницами. Если бы Google мог получить доступ к определенной странице, только перейдя по внутренней ссылке, внедренной в JavaScript, я мог бы измерить, сколько времени потребовалось Google, чтобы добраться до этой страницы, просматривая журналы нашего сервера.
Итак, вместе с Марчин Горчица, мы создали субдомен с двумя папками. В каждой папке был набор страниц, подобных этой:

Копия была сгенерирована ИИ.
Одна из папок (/html/) содержал страницы, созданные только с помощью HTML. Это означает, что Googlebot может перейти по внутренней ссылке на следующую страницу (в приведенном выше случае «Страусы»), не извлекая дополнительные ресурсы и ничего не отображая.
В то же время /js/ папка содержала страницы, которые загружали весь свой контент с помощью ванильного JavaScript (без использования каких-либо фреймворков JavaScript). Таким образом, пока Google не получит дополнительный файл сценария JavaScript (который использовался на всех страницах в папке) и не обработает эти страницы, выполнив JavaScript, он увидит в основном пустую страницу:

После рендеринга JavaScript Google обнаружит сгенерированную ИИ копию, похожую (но другую!) на копию в папке /html/, а также внутреннюю ссылку, как и на HTML-страницах.
В обеих папках было в общей сложности семь страниц, шесть из которых были доступны только по этим внутренним ссылкам.
Мы связались с Google о существовании первой страницы в каждой папке, а затем подождали, пока все страницы будут просканированы.
Полученные результаты
Это заняло Google 313 часов чтобы добраться до последней, седьмой страницы папки JavaScript.
С HTML это заняло всего 36 часов. Это почти в 9 раз быстрее.

Задержка варьировалась в зависимости от того, насколько глубоко робот Googlebot проникал в экспериментальные страницы, но она всегда была существенной. Даже с первой внутренней ссылкой, внедренной с помощью JavaScript, роботу Googlebot потребовалось в два раза больше времени, чтобы перейти по ней, чем по ссылке HTML (52 часа против 25 часов). По мере того, как он углублялся в папки, задержка становилась все более экстремальной.

Выводы
Если быть честным, Я не ожидал, что результаты будут такими разными для JavaScript и HTML.
В 2019 году я написал статью в ответ на заявления Google о том, что задержка между сканированием и рендерингом составляет 5 секунд по медиане. Но тогда наше исследование в Onely в основном было сосредоточено на задержке между публикацией контента и его индексацией.
В этом простом эксперименте мы измерили нечто другое.. По сути, мы измерили, сколько времени потребовалось роботу Googlebot для перехода по ссылке в контенте, загруженном с помощью JavaScript, по сравнению со ссылкой в обычном HTML-контенте.
Итак, теперь мы знаем, что есть очень существенная разница. Но остается вопрос: почему?
Обычно краулинговый бюджет является возможным объясняющим фактором. Каждый дополнительный файл, необходимый для отображения страницы, является дополнительным запросом, который необходимо выполнить роботу Googlebot, что способствует увеличению вашего краулингового бюджета. В качестве Эрик Хендрикс из Google сказал во время WMConf 2019«объем сканирования увеличится в 20 раз, когда я начну рендеринг».
Но в нашем эксперименте для рендеринга всех страниц требовался только один файл JavaScript. Google запросил этот файл только при сканировании первой и второй страниц в папке /js/. Не кажется разумным, что этот дополнительный запрос заставит Google в 9 раз дольше сканировать папку /js/.
Возвращаясь к моей древней статье о задержке рендеринга, Мартин Сплитт сказал следующее во время Саммит разработчиков Chrome, ноябрь 2019 г.:
(…) в прошлом году Том [Greenaway] и я был на этой сцене и говорил вам: «Ну, вы знаете, это может занять до недели, мы очень сожалеем об этом». Забудь об этом, хорошо? Потому что новые цифры выглядят намного лучше. Итак, мы просмотрели цифры и обнаружили, что при медиане время, которое мы потратили между сканированием и фактическим отображением этих результатов, составляет — при медиане — пять секунд!
источник:
Мартин Сплитт, Google
Если это действительно так, то это будет означать, что в моем эксперименте произошло следующее (давайте поговорим о переходе робота Googlebot со второй на третью страницу в папке /js/, просто чтобы пример был понятен):
- Вторая страница просканирована.
- Через 5 секунд (по медиане — допустим, через час!) отрисовалась вторая страница, и Google нашел ссылку на третью страницу.
- Третья страница была просканирована после ожидания в очереди на сканирование 164 часа.
При этом третья страница в папке /html/ была просканирована через три часа после обнаружения второй страницы. Спустя 165 часов прошло 129 часов с тех пор, как робот Googlebot обнаружил последнюю, седьмую страницу в этой папке!
Можно сделать вывод, что Google уделяет меньше внимания сканированию страниц, связанных ссылками, внедренными JavaScript. Но в этом нет никакого смысла — почему Google уделяет меньше внимания сканированию ссылок, которые уже были обнаружены?
Поэтому для меня остается только одно объяснение: существует значительная задержка между сканированием страницы и ее отображением, и поэтому Google потребовалось так много времени, чтобы обнаружить и просканировать последовательные страницы в папке /js/.
Поскольку рендеринг требует дополнительных вычислительных ресурсов, страницы, требующие рендеринга, должны ожидать в очереди рендеринга в дополнение к очереди сканирования который применяется ко всем страницам.
Конечно, Google может назначить более высокий приоритет рендеринга для популярных страниц, и задержка может быть не всегда такой значительной. Но прежде чем решить, что для вас это не проблема, проведите эксперимент на своем веб-сайте и проверьте, сколько времени ваши страницы находятся в очереди на отрисовку.
Вот мой главный вывод: очередь рендеринга очень реальна и может существенно замедлить процесс обнаружения Googlebot на вашем веб-сайте. Особенно для веб-сайтов, которые выталкивают тонны контента и нуждаются в его быстрой индексации, таких как новостные сайты, это критическая проблема.
Если вы используете JavaScript для создания ЛЮБОГО контента, вероятно, лучше отображать его на стороне сервера. Мы знали об этом много лет, но этот эксперимент — еще один аргумент в пользу выбора серверного рендеринга ради SEO.