Как Google обрабатывает JavaScript в процессе индексации веб-страниц
- среда, 21 августа 2024 г. в 00:00:04
Понимание того, как поисковые системы изучают, рендерят и индексируют веб-страницы, имеет решающее значение для оптимизации сайтов под поисковые системы. По мере изменений в работе поисковых систем (например, Google), отслеживать, что работает, а что нет, становится все сложнее, особенно в случае с клиентским JS.
Все еще существуют устаревшие убеждения, вводящие в заблуждение SEO-специалистов относительно выбора лучших решений для поисковой оптимизации приложений:
Чтобы разобраться с этими убеждениями, мы объединились с MERJ, ведущей консалтинговой компанией в области SEO и управления данными, и провели эксперименты по изучению поведения поискового бота Google. Мы проанализировали более 100 000 запросов Googlebot на различных сайтах, чтобы протестировать и подтвердить (или опровергнуть) его возможности, связанные с SEO.
Давайте рассмотрим, как эволюционировал рендеринг Google. Затем проанализируем наши выводы относительно реального влияния клиентского JS на современные веб-приложения.
За прошедшие годы способность Google изучать и индексировать веб-контент претерпела значительные изменения. Понимание этих изменений важно для осознания текущего состояния SEO для современных веб-приложений.
На заре поисковых систем Google в основном индексировал статический HTML-контент. Контент, созданный с помощью JS, был почти невидим для поисковых систем, что приводило к необходимости использования статического HTML.
Google создал схему AJAX-индексации (AJAX crawling scheme), позволяющую сайтам предоставлять HTML-снимки (HTML snapshots) динамически генерируемого контента. Это было временным решением, требующим от разработчиков создания отдельных, поддающихся индексации версий веб-страниц.
Google начал рендерить страницы с использованием браузера Chrome без графического интерфейса. Значительный шаг вперед. Однако старая версия браузера была ограничена в обработке современных возможностей JS.
На данный момент Google использует современную версию Chrome для рендеринга веб-страниц. Ключевые аспекты текущей системы включают:
User-Agent
(устройства пользователя). Вместо этого оптимизируйте приложение на основе рендеринга без сохранения состояния для Google и реализуйте персонализацию с помощью методов с сохранением состояния.Cache-Control
, служба рендеринга веб-сайта Google использует собственные внутренние эвристики для определения, когда кэшированные ресурсы остаются актуальными, а когда их необходимо обновить.
Современный процесс индексации Google выглядит примерно так.
Теперь, когда мы лучше понимаем возможности Google, связанные с SEO, рассмотрим некоторые распространенные мифы.
Для проверки распространенных мифов мы провели исследование, используя инфраструктуру Vercel и технологию Web Rendering Monitor (WRM) от MERJ. Наш фокус был сосредоточен на сайте nextjs.org с дополнительными данными из monogram.io и basement.io, охватывающими период с 1 по 30 апреля 2024 года.
На указанные сайты был внедрен специальный промежуточный слой (Edge Middleware), чтобы перехватывать и анализировать запросы от поисковых ботов. Этот слой позволил:
Данная библиотека, срабатывая по завершении рендеринга страницы, отправляла на специальный сервер следующую информацию:
Сопоставив информацию из серверных логов о первоначальных запросах с данными, полученными от посредника, мы смогли:
Основное внимание было уделено данным, полученным от Googlebot, так как это обеспечило нам самую крупную и надежную базу. Анализ охватил свыше 37 000 отрендеренных HTML-страниц, что позволило сформировать прочную основу для дальнейших выводов.
Мы также продолжаем сбор информации об обработке контента другими поисковыми системами, включая AI-агенты наподобие OpenAI и Anthropic, и планируем поделиться этими результатами в будущем.
Далее мы рассмотрим каждый миф, предоставляя при необходимости дополнительные сведения о методологии.
Этот миф побудил многих разработчиков избегать использования JS-фреймворков или применять сложные обходные решения для SEO-задач.
Чтобы проверить способность Google обрабатывать контент, генерируемый с помощью JS, мы сосредоточились на нескольких ключевых аспектах:
nextjs.org
— сайта, использующего сочетание предварительного рендеринга статического контента, серверного и клиентского рендеринга.nextjs.org
, загружающие контент асинхронно через вызовы API. Это позволило определить, может ли Googlebot обрабатывать и индексировать контент, отсутствующий в первоначальном HTML-ответе.nextjs.org
построена с использованием Next.js App Router и RSC. Мы отслеживали, как Googlebot обрабатывает и индексирует контент, поступающий на страницу постепенно.nextjs.org
(исключая ошибки и неиндексируемые страницы), 100% HTML-страниц были успешно отрендерены, включая страницы со сложными JS-взаимодействиями.Распространено ошибочное мнение, что Google использует отдельный подход для обработки страниц с большим объемом JS. Наши исследования, а также официальные заявления Google, опровергают этот миф.
Чтобы проверить, действительно ли Google по-разному обрабатывает страницы с JS, мы применили несколько методов:
@import
: мы создали тестовую страницу без JS, но с CSS-файлом, который подключает (@imports
) второй CSS-файл (он будет загружен и появится в серверных логах только при разборе первого CSS-файла). Сравнив это поведение со страницами с JS, мы могли проверить, обрабатывает ли Google CSS-файлы по-разному.noindex
. Это помогло понять, обрабатываются ли страницы с интенсивным использованием JS в этих сценариях по-разному.nextjs.org
с разными уровнями сложности JS — от минимального до высокодинамичного с обширным клиентским рендерингом. Также рассчитали и сравнили время между первоначальным анализом и завершенным рендерингом, чтобы определить, влияет ли более сложный JS на продолжительность очередей рендеринга (rendering queues) или время обработки.noindex
в исходном HTML не рендерятся, независимо от JS. Удаление тега noindex
на клиентской стороне неэффективно для SEO, так как Google не рендерит страницу, если тег присутствует в начальном HTML-ответе.nextjs.org
мы не выявили корреляции между сложностью JS и задержкой рендеринга. Однако более сложный JS на гораздо более крупном сайте может ухудшать эффективность индексации.Многие специалисты по SEO полагают, что страницы с большим объемом JS сталкиваются со значительными задержками индексации из-за очереди рендеринга. Наше исследование дает более четкое представление об этом процессе.
Чтобы оценить влияние очереди рендеринга и временных задержек на SEO, мы изучили следующие аспекты:
nextjs.org
.nextjs.org
(например, /docs
, /learn
, /showcase
).Распределение задержек рендеринга выглядит следующим образом:
Несмотря на то, что некоторые страницы сталкивались со значительными задержками (до ~18 часов в 99-м процентиле), это были всего лишь исключения.
Более того, результаты исследования показали, что 25-й процентиль страниц был отрендерен в течение 4 секунд после первоначального анализа, что ставит под сомнение представление о длительной "очереди" рендеринга.
Мы также наблюдали интересные закономерности, связанные с тем, насколько быстро Google рендерит URL-адреса с параметрами запроса (?param=xyz):
Тип URL | 50-й процентиль | 75-й процентиль | 90-й процентиль |
---|---|---|---|
Все URL | 10 секунд | 26 секунд | ~3 часа |
URL без строки запроса | 10 секунд | 22 секунд | ~2,5 часа |
URL со строкой запроса | 13 секунд | 31 минута | ~8,5 часа |
Эти данные свидетельствуют о том, что Google по-разному обрабатывает URL-адреса с параметрами запроса, не влияющими на содержимое. Так, на nextjs.org
страницы с параметрами ?ref=
демонстрировали более длительные задержки рендеринга, особенно на высоких процентилях.
Кроме того, мы заметили, что часто обновляемые разделы, вроде /docs
, имели меньшее медианное время рендеринга по сравнению с более статичными разделами. Например, страница /showcase
, несмотря на частые ссылки на нее, показывала более длительное время рендеринга, что может указывать на замедление повторного рендеринга Google для статичных страниц.
Устойчивое мнение в сообществе SEO специалистов: веб-сайты с большим объемом JS, особенно использующие клиентский рендеринг (CSR), такие как одностраничные приложения (SPA), сталкиваются с более медленным обнаружением страниц поисковой системой Google. Наши исследования опровергают этот миф.
Для изучения влияния JS на обнаружение страниц были проведены некоторые тесты:
nextjs.org
)./showcase
JSON-объект, похожий на полезную нагрузку React Server Component (RSC), содержащий ссылки на новые, ранее неизвестные страницы, чтобы проверить, сможет ли Google обнаруживать ссылки в неиспользуемом JS.https%3A%2F%2Fwebsite.com
) в нашей подобной RSC нагрузке, что свидетельствует о строгом подходе поисковика к разбору ссылок.<a>
или встроенная в JSON-нагрузку) не влияют на приоритет ее индексирования Google. Приоритет индексирования оставался последовательным, независимо от того, была ли ссылка обнаружена при первичном индексировании или после рендеринга.sitemap.xml
) значительно снижает или устраняет различия в скорости индексации между разными подходами к рендерингу.Наши исследования опровергают несколько распространенных мифов о том, как Google взаимодействует с сайтами, содержащими большое количество JS. Ключевые выводы и практические рекомендации следующие.
noindex
) вовремя, поскольку Google может не учесть изменения, вносимые на стороне клиента.robots.txt
.<a href="...">
) для важных навигационных элементов вместо клиентской JS. Это поможет как пользователям, так и эффективности индексации поисковиками, снижая задержки рендеринга.<lastmod>
в XML-картах, чтобы направлять процессы анализа и индексации Google. Обновляйте <lastmod>
только при существенных изменениях контента.Можно отметить следующие различия между стратегиями рендеринга в контексте возможностей Google:
Возможность | SSG | ISR | SSR | CSR |
---|---|---|---|---|
Эффективность анализа: как быстро и эффективно Google может получать доступ, рендерить и извлекать веб-страницы | Отлично | Отлично | Очень хорошо | Плохо |
Обнаружение: процесс обнаружения новых URL для анализа* | Отлично | Отлично | Отлично | Средне |
Полнота рендеринга (ошибки, провалы и др.): как точно и полно Google может загружать и обрабатывать веб-страницы без ошибок | Отлично | Отлично | Отлично | Возможен провал** |
Время рендеринга: сколько времени занимает полный рендеринг и обработка веб-страниц | Отлично | Отлично | Отлично | Плохо |
Оценка структуры ссылок: как Google анализирует ссылки для изучения архитектуры веб-сайта и важности страниц | После рендеринга | После рендеринга | После рендеринга | После рендеринга (ссылки могут отсутствовать при провале рендеринга) |
Индексация: процесс хранения и организации контента сайта | Отлично | Отлично | Отлично | Возможен провал индексации при провале рендеринга |
* Использование актуальной карты сайта (sitemap.xml
) существенно сокращает или даже устраняет различия во времени обнаружения между разными моделями рендеринга.
** Согласно нашим исследованиям, рендеринг в Google, как правило, проходит без ошибок. Когда возникают проблемы, они обычно связаны с заблокированными ресурсами, указанными в файле robots.txt
, или крайними случаями.
Несмотря на эти тонкие различия, Google быстро обнаружит и проиндексирует ваш сайт, независимо от используемой стратегии рендеринга. Лучше сосредоточиться на создании производительных веб-приложений, которые приносят пользу пользователям, вместо того, чтобы беспокоиться об особенностях индексации Google.
В конце концов, скорость загрузки страницы по-прежнему является фактором ранжирования, поскольку система ранжирования пользовательского опыта Google оценивает производительность вашего сайта на основе показателей Core Web Vitals.
Кроме того, скорость загрузки приложения напрямую связана с хорошим пользовательским опытом — каждые 100 мс сэкономленного времени загрузки соответствуют 8% росту конверсии на сайте. Меньшее количество пользователей, покидающих страницу, означает, что Google рассматривает ее как более релевантную. Производительность имеет мультипликативный эффект; миллисекунды важны.
Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале ↩