Общие сведения о поисковой оптимизации сайтов на JavaScript

JavaScript играет важную роль в Интернете, поскольку используется при создании множества эффективных приложений. Если у вас есть такие приложения, а контент из них будет представлен в Google Поиске, вы сможете привлекать новых пользователей и удерживать имеющихся. Google Поиск обрабатывает контент с помощью последней версии Chromium. В связи с этим мы рекомендуем вам оптимизировать свои приложения, чтобы повысить эффективность сканирования.

В этом руководстве рассказывается о том, как мы сканируем и индексируем веб-приложения на основе JavaScript, а также содержатся рекомендации по оптимизации таких приложений для Google Поиска.

Как Googlebot обрабатывает веб-приложения JavaScript

Обработка веб-приложений на основе JavaScript с помощью робота Googlebot предполагает три основных этапа:

  1. Сканирование.
  2. Отображение.
  3. Индексирование.

На схеме ниже указано, по какому алгоритму робот Googlebot выполняет эти операции.

Googlebot получает URL из очереди сканирования, выполняет сканирование и передает страницу на этап обработки. На этапе обработки извлекаются ссылки, которые возвращаются в очередь сканирования, после чего страница становится в очередь на отображение. Страница переходит к средству отображения, которое возвращает отрисованный HTML на обработку. На этом этапе выполняется индексирование контента и извлекаются ссылки для добавления в очередь сканирования.

Получив URL из очереди сканирования при помощи HTTP-запроса, робот Googlebot в первую очередь проверяет, не блокируете ли вы обработку страницы, а затем обращается к файлу robots.txt. Если доступ к URL запрещен, Googlebot не отправляет HTTP-запрос по нему и пропускает его.

Затем Googlebot анализирует ответы от других URL, заданных в атрибутах href HTML-ссылок, и добавляет их в очередь сканирования. Если вы не хотите, чтобы робот Googlebot переходил по ссылкам, задайте для них атрибут rel="nofollow".

Сканирование URL и анализ HTML-ответа эффективны в случае обычных сайтов и страниц, отображаемых на стороне сервера, когда весь контент содержится в коде HTML из HTTP-ответа. Однако на некоторых сайтах применяется модель оболочки, при которой контент не содержится в исходном коде HTML – чтобы получить его, роботу Googlebot необходимо выполнить этот код JavaScript.

Робот Googlebot ставит все URL в очередь на отображение, если в заголовке или метатеге robots не содержится запрет на индексирование страницы. Страница может задержаться в очереди на несколько секунд (в некоторых случаях на более длительное время). Когда Googlebot предоставляет необходимые ресурсы, консольный браузер Chromium передает ему отображенную страницу с выполненным JavaScript. Googlebot анализирует полученный HTML-код, индексирует содержащийся на ней контент и ставит все обнаруженные в нем URL в очередь на сканирование.

Мы рекомендуем по возможности использовать отображение на стороне сервера или предварительное отображение, поскольку в этом случае сайт будет загружаться быстрее. Кроме того, не все роботы могут выполнять код JavaScript.

Укажите информацию о своей странице с помощью уникальных заголовков и метаописаний

Уникальные заголовки, относящиеся к содержанию сайта, и информативные метаописания помогают пользователям как можно быстрее находить наиболее подходящие результаты. Сведения о том, как создавать информативные заголовки страниц и описания, доступны в Справочном центре.

Задавать и изменять метаописания и заголовки можно с помощью JavaScript.

Создайте код, совместимый с роботом Googlebot

В современных браузерах реализовано множество различных API, а язык JavaScript быстро развивается. Робот Googlebot может не поддерживать некоторые API и функции JavaScript. Чтобы обеспечить совместимость вашего кода с роботом Googlebot, следуйте рекомендациям из специального руководства.

Используйте понятные коды статусов HTTP

Робот Googlebot получает информацию о проблемах, возникших при сканировании страницы, с помощью кодов статусов HTTP.

Чтобы робот Googlebot мог определить, разрешено ли ему ли сканировать или индексировать страницу, рекомендуется использовать стандартные коды статусов. Например, если страницу не удалось найти, используйте код 404, а если для доступа к странице требуется указать учетные данные, – код 401. Также с помощью кодов статусов HTTP можно сообщить роботу Googlebot о переносе страницы на новый URL, чтобы мы обновили индекс.

Ниже приведены коды статусов HTTP и сведения о том, в каких случаях они используются.

Статус HTTP В каком случае используется этот статус
301/302 Страница перенесена на новый URL.
401/403 Отсутствует разрешение на доступ к странице.
404/410 Страница недоступна.
5xx Произошла ошибка на стороне сервера.

Используйте метатеги robots с осторожностью

Роботу Googlebot можно запретить индексировать определенную страницу или последующие ссылки с помощью метатега robots. Например, Googlebot не будет обрабатывать страницу, если в ее верхней части добавить следующий тег:

<!-- Googlebot won't index this page or follow links on this page -->
<meta name="robots" content="noindex, nofollow">

Чтобы добавить на страницу метатег robots или изменить его, можно использовать JavaScript. В примере ниже показано, как запретить индексирование страницы, когда запрос API не возвращает контент.

fetch('/api/products/' + productId)
  .then(function (response) { return response.json(); })
  .then(function (apiResponse) {
    if (apiResponse.isError) {
      // get the robots meta tag
      var metaRobots = document.querySelector('meta[name="robots"]');
      // if there was no robots meta tag, add one
      if (!metaRobots) {
        metaRobots = document.createElement('meta');
        metaRobots.setAttribute('name', 'robots');
        document.head.appendChild(metaRobots);
      }
      // tell Googlebot to exclude this page from the index
      metaRobots.setAttribute('content', 'noindex');
      // display an error message to the user
      errorMsg.textContent = 'This product is no longer available';
      return;
    }
    // display product information
    // ...
  });
    

Если Googlebot обнаруживает атрибут noindex в метатеге robots до обработки кода JavaScript, отображение и сканирование страницы не выполняется.

Реализуйте отложенную загрузку для обработки изображений

Изображения могут требовать высокой пропускной способности и снижать скорость загрузки ресурсов. Мы рекомендуем применять отложенную загрузку, чтобы изображения загружались только в тот момент, когда их вот-вот увидит пользователь. Чтобы оптимизировать отложенную загрузку для поисковых систем, следуйте специальным рекомендациям.