Филин Лаки
125,28
рейтинг
26 мая 2014 в 16:47

Разработка → Совершенствуем понимание веб-страниц перевод

Уровень подготовки веб-мастера: для всех

В 1998 году, когда все наши серверы умещались в гараже Сьюзан Войчицки (Susan Wojcicki), мало кто задумывался о том, как JavaScript или CSS взаимодействуют с поисковым роботом: эти технологии применялись нечасто. Разве что создатели некоторых страниц с помощью JavaScript заставляли элементы оформления… мигать. Однако с тех пор многое изменилось. Сейчас в Интернете можно найти множество красочных сайтов с интерактивным дизайном, на которых широко используется JavaScript. И сегодня мы поговорим об индексации ресурсов со сложным интерфейсом и структурой:

  • о том, почему Google обрабатывает их так, как это делают современные браузеры;
  • зачем нужно обращаться к внешним ресурсам;
  • как наша система анализирует код JavaScript и CSS.

Ранее мы обрабатывали только текстовое содержание в теле ответа HTTP и не анализировали, как страница выглядит в браузере с поддержкой JavaScript. Однако из-за этого нам не удавалось включать в результаты поиска страницы, на которых важный контент отображается только с помощью JavaScript. Это не нравилось ни пользователям, ни веб-мастерам.

Чтобы решить эту проблему, мы стали при анализе страниц обрабатывать также и код JavaScript. Это нелегко, однако игра стоит свеч. За последние несколько месяцев наша система успела просканировать немало сайтов как обыкновенный браузер, использующий JavaScript.
К сожалению, индексация не всегда проходит гладко. Давайте рассмотрим несколько проблем, влияющих на позицию вашего сайта в результатах поиска, и способы их предотвращения:

  • Если доступ к ресурсам JavaScript и CSS заблокирован (например, с помощью файла robots.txt) и робот Googlebot не может их обработать, то наша система будет воспринимать страницы не так, как пользователи. Чтобы индексация была более эффективной, разрешите нашим роботам сканировать такие данные. Это особенно важно, если у вас мобильный сайт. По структуре кода JavaScript и CSS мы можем определить, оптимизированы ли страницы для смартфонов и планшетов.
  • Если ваш веб-сервер не в состоянии справиться с запросами на сканирование ресурсов, это также может помешать правильной обработке контента. Проверьте, могут ли ваши серверы обрабатывать такие запросы в нужном объеме.
  • Рекомендуем также создать упрощенную версию сайта. Тогда пользователи смогут просматривать ваши материалы даже в браузере, который не поддерживает JavaScript. Упрощенная версия пригодится и тем, у кого эта функция отключена. Наконец, далеко не все поисковые системы в настоящее время могут обрабатывать JavaScript.
  • Если код JavaScript слишком сложный или запутанный, Google может проанализировать его некорректно. Стоит задуматься, нельзя ли упростить код без ущерба для функциональности.
  • Иногда JavaScript удаляет контент со страницы, а не добавляет его, что также затрудняет индексацию. Если этот контент в целом доступен для пользователей, необходимо обеспечить и его доступность для робота Googlebot.

Сейчас мы работаем над новым инструментом, который упростит поиск ошибок в коде и поможет веб-мастерам понять, как Google обрабатывает их сайты. В ближайшие дни он появится в Инструментах для веб-мастеров.
Если у вас есть вопросы, задавайте их на нашем справочном форуме и продолжайте обусждение в нашем сообществе для веб-мастеров.
Автор: @HabrAndrey Майкл Ксю (Michael Xu), инженер-программист, и Казуши Нагаяма (Kazushi Nagayama), аналитик Google
Google
рейтинг 125,28
Филин Лаки

Комментарии (14)

  • +12
    Если код JavaScript слишком сложный или запутанный, Google может проанализировать его некорректно. Стоит задуматься, нельзя ли упростить код без ущерба для функциональности.

    Это как? Написано так, как будто сидят 200 китайцев и не могут скомпилировать в голове сложный запутанный код. Проясните, пожалуйста, какая разница V8 какой код обрабатывать?

    Возникла мысль только о различных таймаутах, но сложный код как будто тут не причем…
    • +1
      Вполне возможно, что под «сложностью» и понимается асинхронность и несвязность функционала. Вероятно, бот не просто компилирует DOM по загрузке, но и анализирует простейшие случаи динамики, типа смены локации по клику, для дальнейшей инджексации, например.
      Только догадки.
    • 0
      Мне так видится, что одно дело код интерпретировать построив DOM (задача чисто техническая, реализуется просто), другое дело, как оно ведет себя в рамках реальной страницы. Задача «прокликать» ботом страницу более сложная. Например, выпадающее меню при наведении/проходе на нем курсора. Человек глазами видит «о, меню, что тут у нас» и может дальше двигаться по сайту. У бота глаз нет и видеть страницу как человек он не может.
      • 0
        Ну все правильно, я думаю они ориентируются не на дизайн, а на навешенные события (например, клик).
        Та же смена локации отслеживается изменением location, history, hash и т.д.
        Сменился контент, опять же следим за этим

        Т.е. как я это вижу — есть определенные триггеры после определенных событий, которые важны для поискового бота: смена URL, смена контента и т.д., какая разница сколько и какого кода при этом выполнится — непонятно.
        • 0
          Если бы все было просто по кликам, проблем бы небыло. А на практике приходится писать свой кастомный бот под каждый из скачиваемых ресурсов. Очевидно, что поисковик так делать не будет. Отсюда, имхо, и идет упоминание «сложности» кода.
    • 0
      На счёт сложного кода — Гугл просто пытается сэкономить время обработки одной страницы своим ботом. Понятное дело, что ему выгоднее иметь дело с Javascript, отрабатывающем за 1 мс, а не с тем, который что-то делает целую 1 секунду.
  • +1
    А если я выдаю контент, например, список итемов, без перезагрузки страницы, а при помощи Ajax, это плохо или хорошо?
  • +1
    Теперь спрятать контент от индексации не выйдет. Google надо добавить свой . Или нам придется изголяться сильней, дробить js на файлы, которые могут индексироваться, и которые не могут.
  • +1
    Интересно, может сейчас робот индексировать сайты с java script шаблонизацией? Например использующие ангуляр и Ajax через $http service.
  • 0
    Получается, что теперь добросовестный вебмастер, желающий скрыть неуникальный контент / ссылки / многократное повторение ключевых слов с помощью javascript на части страницы полностью лишается этой возможности?
  • 0
    Только 3 пункт правилен.

    Рекомендуем также создать упрощенную версию сайта. Тогда пользователи смогут просматривать ваши материалы даже в браузере, который не поддерживает JavaScript.
  • +2
    Гугл мог бы и получше статью состряпать, уныло.
  • 0
    По-моему, все рекомендации можно было бы заменить одной единственной:
    Если хотите, чтобы гугл индексировал ваш контент, предоставьте к нему доступ через ссылки
    По-моему, легче запилить карту сайта, и вставить ссылку на нее в html страницы через тэг <link> (ну или даже видимой ссылкой внизу страницы), чем еще и при написании JavaScript думать о том, чтобы он понравился Google.
    • 0
      Если в интернете сделать сайт с единственной кнопкой «получить 100000 рублей на свою банковскую карту», который сам будет угадывать номер вашей карты и отправляет на нее деньги, то 50% пользователей все равно поленятся туда заходить. А вы говорите о картах сайта для индексации контента… Sitemap то не каждый сайт имеет, а тут еще и html страницы создавать.
      P.S. На самом деле похожая штука есть, почитайте о индексации ajax сайтов. Например, у Яндекса — help.yandex.ru/webmaster/robot-workings/ajax-indexing.xml

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка