Blog

Предложение по обеспечению индексирования AJAX

Среда, 7 октября 2009 г.

Сегодня мы рады предложить новый стандарт для обеспечения сканирования и индексирования сайтов на базе AJAX. Это принесет пользу как веб-мастерам, так и пользователям, сделав контент насыщенных и интерактивных сайтов на AJAX универсально доступным через результаты поиска в любой поисковой системе, решившей принять в этом участие. Мы верим, что предоставление такого контента для сканирования и индексирования может существенно улучшить интернет.

Предложение по обеспечению индексирования AJAX

Хотя сайты на базе AJAX популярны среди пользователей, поисковые системы традиционно не могут получить доступ к какому-либо контенту на них. По нашим последним данным, почти 70% известных нам сайтов используют JavaScript в той или иной форме. Разумеется, большая часть этого JavaScript — не AJAX, но чем лучше поисковые системы смогут сканировать и индексировать AJAX, тем больше возможностей разработчики смогут добавлять на свои сайты, сохраняя при этом видимость в поисковых системах.

Некоторые из целей, которых мы хотели достичь с помощью этого предложения:

  • При росте сайта требуются минимальные изменения
  • Пользователи и поисковые системы видят один и тот же контент (без клоакинга)
  • Поисковые системы могут отправлять пользователей напрямую на URL-адрес AJAX (а не на статическую копию)
  • У владельцев сайтов есть способ проверить, правильно ли рендерится их сайт на AJAX и, следовательно, есть ли у краулера доступ ко всему контенту

Вот как поисковые системы будут сканировать и индексировать AJAX в нашем первоначальном предложении:

  • Слегка измените фрагменты URL для страниц AJAX с сохранением состояния
    Страницы AJAX с сохранением состояния отображают один и тот же контент при прямом обращении к ним. Это страницы, на которые можно ссылаться в результатах поиска. Вместо такого URL:
    https://example.com/page?query#state
    мы хотели бы предложить добавить токен, позволяющий распознавать такие URL:
    https://example.com/page?query#[FRAGMENTTOKEN]state. Основываясь на анализе текущих URL в сети, мы предлагаем использовать «!» (восклицательный знак) в качестве токена для этого. Предлагаемый URL, который можно будет показывать в результатах поиска, тогда будет выглядеть так:
    https://example.com/page?query#!state.
  • Используйте headless-браузер (браузер без графического интерфейса), который выводит HTML-снимок на вашем веб-сервере
    Headless-браузер используется для доступа к странице AJAX и генерирует HTML-код на основе конечного состояния в браузере. Для обработки в headless-браузер передаются только специально помеченные URL. Делая это на стороне сервера, владелец сайта получает полный контроль над создаваемым HTML-кодом и может легко проверить правильность выполнения всего JavaScript. Примером такого браузера является
    HtmlUnit, «браузер без графического интерфейса для программ на Java» с открытым исходным кодом.
  • Предоставьте поисковым роботам доступ к этим URL путем экранирования состояния
    Поскольку фрагменты URL никогда не отправляются с запросами на серверы, необходимо немного изменить URL, используемый для доступа к странице. В то же время это говорит серверу использовать headless-браузер для генерации HTML-кода вместо возврата страницы с JavaScript. Другие существующие URL — например, те, которые используют пользователи — будут обрабатываться в обычном режиме, в обход headless-браузера. Мы предлагаем экранировать информацию о состоянии и добавлять ее к параметрам запроса с помощью токена. Используя предыдущий пример, один из таких URL будет выглядеть следующим образом:
    https://example.com/page?query&[QUERYTOKEN]=state. Основываясь на нашем анализе текущих URL в сети, мы предлагаем использовать _escaped_fragment_ в качестве токена. Предлагаемый URL тогда примет вид:
    https://example.com/page?query&_escaped_fragment_=state.
  • Показывайте пользователям оригинальный URL в результатах поиска
    Для улучшения пользовательского опыта имеет смысл ссылаться на пользователей напрямую через страницы на базе AJAX. Этого можно добиться, отображая в результатах поиска исходный URL (например,
    https://example.com/page?query#!state из нашего примера выше). Поисковые системы могут проверить, что индексируемый текст, возвращаемый Googlebot, совпадает с текстом, возвращаемым пользователям, или является его частью.

diagram of an http request with ajax crawl setup

Таким образом, начиная с URL с состоянием, например
https://example.com/dictionary.html#AJAX, он может быть доступен как для краулеров, так и для пользователей как https://example.com/dictionary.html#!AJAX который можно просканировать как
https://example.com/dictionary.html?_escaped_fragment_=AJAX , что, в свою очередь, будет показано пользователям и доступно как https://example.com/dictionary.html#!AJAX

Посмотреть презентацию

В настоящее время мы работаем над предложением и прототипом реализации. Мы будем рады вашим отзывам — пожалуйста, оставляйте свои комментарии ниже или на нашем
Форуме помощи веб-мастерам. Благодарим вас за интерес к тому, чтобы сделать веб на базе AJAX доступным и полезным с помощью поисковых систем!

Автор статьи в блоге:
John Mueller, специалист по анализу тенденций для веб-мастеров, Google Цюрих

Alien Road

Как мы это применяем

Google announcements age. We keep this post here for the record, and we note for clients whether the behaviour it describes still applies today or has since been superseded.

Связанные услуги

Поделиться