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