Поиск
Удалить поисковый запрос
Закрыть поиск
Приложения Google
Главное меню
true

Часто задаваемые вопросы по AJAX

В этой статье представлены ответы на основные вопросы о сканировании ресурсов, которые используют AJAX.
Когда нужно использовать элементы _escaped_fragment_ или #! в URL ресурсов, использующих AJAX?

Элемент #! должен содержаться во всех таких URL. Робот Googlebot не переходит по ссылкам, в которых используется формат _escaped_fragment_.

Где можно ознакомиться с принципами работы AJAX?

Пример приложения AJAX доступен на cтранице http://gwt.google.com/samples/Showcase/Showcase.html. Нажмите на любую из ссылок слева, и вы увидите, что в URL используется хеш #!, который позволяет переводить приложение в соответствующее состояние. Если вы поменяете элемент #! (например, в URL http://gwt.google.com/samples/Showcase/Showcase.html#!CwRadioButton) на ?_escaped_fragment_= (http://gwt.google.com/samples/Showcase/Showcase.html?_escaped_fragment_=CwRadioButton), сайт будет возвращать снимок HTML.

Почему нужно использовать элемент #! в URL ресурса AJAX?

На сегодняшний день страницы без этого элемента не будут правильно отображаться в результатах поиска Google. Однако мы продолжаем работать над тем, чтобы работа робота Googlebot была больше похожа на работу браузера. Как только функции, необходимые для вашего сайта, будут реализованы, робот Googlebot сможет начать правильно вносить в индекс ваши страницы без дополнительной помощи. Однако такая схема сканирования AJAX предлагает решение этой проблемы для сайтов, на которых уже используется AJAX и для которых правильное индексирование содержания нужно обеспечить уже сейчас. Мы полагаем, что наше решение подойдет разработчикам, которые уже применяют снимки HTML-кода своих страниц или создают их с помощью консольного браузера.

Сколько снимков HTML нужно использовать?

Это зависит от того, часто ли происходят изменения в вашем приложении. Если да, лучше формировать новый снимок HTML при обработке каждого запроса от поискового робота. С другой стороны, приложение может представлять собой архив библиотеки, ресурс которого изменяется редко. Чтобы серверу не приходилось постоянно создавать одни и те же снимки HTML, лучше сохранить их и в дальнейшем просто к ним обращаться. Можно также вернуть роботу Googlebot код статуса HTTP 304 (не изменен).

А если в моем приложении не используются хеш-фрагменты?

Попробуйте реализовать их. Использование хеш-фрагментов значительно повышает скорость работы приложения, поскольку они обрабатываются браузером на стороне клиента и дают возможность не обновлять всю страницу. Кроме того, хеш-фрагменты обеспечивают работу истории в приложении (пресловутая кнопка "Назад" в браузере). Их используют различные платформы AJAX. Например, это Really Simple History, плагин управления историей jQuery, а также управление историей в Google Web Toolkit или в ASP.NET с помощью AJAX.

Если же реализовать хеш-фрагменты в приложении невозможно, используйте специальный токен в хеш-фрагменте (к нему относятся все символы после знака # в URL). Хеш-фрагмент, который представляет уникальное состояние страницы, должен начинаться с восклицательного знака. Например, если приложение AJAX содержит URL наподобие следующего:

www.example.com/ajax.html#mystate

он должен выглядеть так:

www.example.com/ajax.html#!mystate

Если сайт AJAX поддерживает эту схему, он будет считаться доступным для сканирования. Это означает, что поисковый робот увидит содержание приложения, если сайт предоставит снимок HTML.

Не будет ли отображаться множество сложных URL с синтаксисом _escaped_fragment_ ?

Синтаксис _escaped_fragment_ используется для временных URL, которые не показываются пользователям. Если же адрес можно увидеть, например при работе в приложениях, в файлах Sitemaps, гиперссылках, при переадресации, это должен быть упрощенный URL (с обозначением #! вместо _escaped_fragment_). Именно такие адреса отображаются в результатах поиска.

Провоцирует ли технология AJAX использование маскировки?

Под маскировкой понимается показ разного содержания пользователям и поисковым системам. Обычно такой метод используется для недобросовестного повышения рейтинга сайтов. Мы не одобряем такую практику и не считаем, что для ее реализации допустимо применять AJAX Поэтому снимок HTML должен содержать тот же контент, который конечный пользователь увидит в браузере. В противном случае мы будем расценивать это как маскировку. Подробнее...

Поможет ли AJAX повысить индексируемостмоих файлов Flash и других мультимедийных объектов?

Google индексирует различные типы мультимедийных файлов, и наши технологии непрерывно совершенствуются. Но поисковые роботы не всегда могут отсканировать материалы Flash или аналогичные ресурсы, а также весь динамический контент на сайте. Используя описанные здесь технологии, вы помогаете роботу Googlebot обработать больше контента. Напоминаем, что снимок HTML должен совпадать с тем, что пользователь видит в браузере. Google оставляет за собой право исключать из индекса сайты, на которых используется маскировка.

Что если некоторые URL хеш-фрагментов на моем сайте сканировать не нужно?

Поисковый робот Google просканирует URL всех хеш-фрагментов, которые найдет на сайте, поддерживающем технологию AJAX. Если некоторые из этих URL сканировать не нужно, закройте к ним доступ с помощью файла robots.txt. Чтобы это проще было сделать, дайте всем таким фрагментам сходные названия. Допустим, все неиндексируемые фрагменты выглядят как #D. Чтобы робот Googlebot не сканировал эти страницы, добавьте в файл robots.txt следующую строку:

Disallow: /*_escaped_fragment_=DONOTCRAWL
Что если элемент #! уже используется в хеш-фрагментах? Что можно предпринять?

#! редко используется в хеш-фрагментах, однако этот токен не запрещен спецификацией URL. Как быть, если #! уже есть в ваших URL и вы не хотите переходить на новый алгоритм работы с AJAX? В таком случае можно добавить в файл robots.txt команду для поискового робота:

Disallow: /*_escaped_fragment_

Это означает, что если приложение содержит только следующий URL: www.example.com/index.html#!mystate, то этот URL не будет сканироваться. Если же помимо этого адреса также используется обычный URL (www.example.com/ajax.html), он сканируется.

Поддерживает ли AJAX специальные возможности?

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

Как использовать rel="canonical"?

Используйте <link rel="canonical" href="http://example.com/ajax.html#!foo=123" />, а не <link rel="canonical" href="http://example.com/ajax.html?_escaped_fragment_=foo=123" />.

Какой URL рекомендуется использовать в Sitemap?

URL будет отражаться в результатах поиска, поэтому он должен выглядеть так: http://example.com/ajax.html#!foo=123.

Как URL с элементом #! работают в фидах товаров?

Этот вопрос часто задают владельцы сайтов, на которых одни и те же URL используются в Google Поиске и Покупках. Как правило, версия URL с #! считается канонической и используется в любом контексте. А URL с _escaped_fragment_ – временный, и его не должен видеть конечный пользователь.

Я использую HtmlUnit в качестве консольного браузера, но он не работает. Почему это происходит?

Если HtmlUnit не предоставляет снимок, вероятно он не успел выполнить код JavaScript и отправить запросы XHR. Чтобы решить эту проблему, попробуйте следующее.

  • Используйте NicelyResynchronizingAjaxController. Это даст HtmlUnit возможность дождаться выполнения всех вызовов XHR.
  • Увеличьте время ожидания для элемента waitForBackgroundJavaScript и/или waitForBackgroundJavaScriptStartingBefore.
Если это не помогло решить проблему, изучите ответы на часто задаваемые вопросы по HtmlUnit на странице http://htmlunit.sourceforge.net/faq.html или обратитесь к пользователям форума, посвященного этому продукту.

 

Была ли эта статья полезна?
Как можно улучшить эту статью?
false