Поисковая система, доступная для контента Ajax

В 2009 году Google предложил стандарт, позволяющий поисковым системам получать доступ к содержимому веб-страниц, динамически генерируемому с помощью Ajax, так как ожидается экспоненциальный рост веб-приложений .

В 2015 году поисковик передумал и объяснил это в статье под названием: Deprecating our AJAX crawling schemes. (Настоящее название - Ajax, а не AJAX, но есть некоторые предвзятые понятия, которые невозможно искоренить.)

По состоянию на 2015 год в статье указано, что краулеру достаточно иметь доступ к файлам JavaScript и CSS, чтобы иметь возможность индексировать динамический контент (это сильно зависит от скрипта). Если сайт следует принципу прогрессивного улучшения, означающему, что контент добавляется понемногу через JavaScript, краулер может получить доступ к данным и учесть их при индексировании.

Метод 2009 года здесь для записи и больше не актуален, кроме как знать, что это было. Использовать pushState; это сейчас рекомендуемый метод.

Использование pushState

Если ваша аудитория использует недавний браузер, отличный от IE 9, вы можете пропустить все описанное выше и просто использовать метод pushState объекта истории. Его роль заключается в искусственном создании URL-адреса для нового состояния страницы.

Параметрами являются: объект, который хранит данные, связанные с состоянием страницы, временный заголовок и временный URL. Пример использования:

var state1 = { ref : "info" };
history.pushState(state1, "Titre de page", "nouvelle-page.html");

Когда пользователь запускает действие, представляющее новое состояние страницы, URL-адрес изменяется и может индексироваться отдельно. Остается только написать код, который сделает этот URL непосредственно доступным!

Напомним, метод сегментов 2009 года

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

Чтобы это было возможно, каждое состояние должно соответствовать фрагменту вида:

http://www.example.com/mapage#fragment
Это то, что автоматически генерируется с помощью фреймворка Ajax или HTML 5.
Однако фрагмент не возвращает код HTTP; чтобы компенсировать это, Google должен искусственно преобразовать его в форму запроса. Запросы возвращают код.
http://www.example.com/mapage#_escaped_fragment_?fragment

Теперь текст фрагмента становится значением, назначенным универсальному параметру. Это нечто невидимое для пользователя.

Общие сведения о системе

  1. Пользователь создает статическую начальную страницу. Он может включать динамические связи и привязки.
    http://www.example.com/index.php?requete#ancre
  2. Мы знаем, что в настоящее время Google может индексировать внутренние ссылки, см. Эволюция алгоритма Google (25 сентября 2009). Это при условии, что внутри страницы есть ссылка, чего нет в случае с динамическим контентом.
  3. Потому что динамическое содержимое также доступно пользователю в этом формате.
    http://www.example.com/index.php?requete#etat
  4. Кроме того, JavaScript может изменять содержимое страницы либо изначально, либо по запросу пользователя.
  5. Однако роботы поисковых систем видят только этот код:
    <script src='showcase.js'></script>
  6. Если поисковик попытается интерпретировать код JavaScript, результат будет случайным.
  7. Первоначально Google предложил, чтобы сервер интерпретировал код JavaScript и создал URL, соответствующий состоянию страницы, измененной кодом JavaScript.
    Но, похоже, конверсию на самом деле выполняет сам обходчик.
  8. URL
  9. генерируется для соответствующего состояния страницы в виде:
    http://www.example.com/index.php?_escaped_fragment_=state
  10. Но он бы отображался в таком более читаемом виде:
    http://www.example.com/index.php#!state
  11. Поисковый агент создает трудночитаемый URL-адрес. Роботы и браузеры смогут преобразовывать читаемый URL в трудночитаемый.
  12. Только читаемый URL доступен пользователю и фигурирует в индексе Google.

Этот стандартный формат теперь распознается веб-исполнителями для преобразования и управления сервером .

Резюме

http://www.example.com/stock.html#Google

Можно легко изменить (с добавленным восклицательным знаком) на:

http://www.example.com/stock.html#!Google

Это будет преобразовано поисковыми системами в:

http://www.example.com/stock.html?_escaped_fragment_=Google

Но отображается в результатах как:

http://www.example.com/stock.html#!Google

Как сделать страницу Ajax судоходной ?

С установленным принципом, что должен сделать веб-мастер, чтобы их страница Ajax попала в систему и была признана Google навигируемой?

Сама страница должна иметь этот метатег:

<meta name="fragment" content="!"> 

Когда сценарий Ajax создает новое состояние, т.е. когда он изменяет содержимое страницы, он должен создать фрагмент, который добавляет к URL страницы (разделенный #) и заменяет его. Это позволяет по-прежнему использовать кнопку «Назад».
Метод создания этого фрагмента зависит от вашего Ajax-фреймворка.

Если страница содержит ссылки на состояния страниц, сгенерированные кодом Ajax, эти ссылки должны содержать фрагмент и восклицательный знак:

<a href="http://www.example.com/showcase.html#!checkbox