AJAX Crawling Scheme
Das AJAX Crawling Scheme ist ein Verfahren, mit dem Google und teilweise auch andere Suchmaschinen Websites crawlen, die dynamisch generierte Inhalte bereitstellen. Seit dem Jahr 2009 nutzte Google dieses Verfahren, am 15. Oktober 2015 gab Google bekannt, dass das Crawling Schema nicht mehr empfohlen wird und als veraltet (depreciated) gilt. Stattdessen sollen nun das sogenannte Progressive Enhancement und die Möglichkeiten von HTML5 (History API) zum Einsatz kommen, um die Zugänglichkeit von bestimmten Inhalten für Crawler zu gewährleisten.
Allgemeine Informationen zum Thema
AJAX-basierte Webanwendungen erzeugen die darzustellenden Inhalte mit der sogenannten asynchronen Datenübertragung zwischen Browser und Server. Auf diese Weise ist es möglich, HTTP-Anfragen per JavaScript und XML (HTTP Request) während einer Browsersitzung durchzuführen, um Inhalte vom Server oder aus einer Datenbank zu laden – ohne aber die HTML-Website erneut zu laden. Das bedeutet, dass Teile des Contents und der Benutzeroberfläche vom Browser geladen werden können, ohne das eine erneute HTTP-Kommunikation zwischen Server und Browser erfolgen muss, wie es bei statischen HTML-Websites der Fall ist. Somit können zum Beispiel bereits eingegebene Formulardaten vom Browser übernommen oder Daten geändert werden, wenn sie aktuell sein müssen (zum Beispiel Datumsangaben).
Dabei wird die Verbindung zwischen Client und Server nicht unterbrochen. Vielmehr stößt der Nutzer den Prozess der dynamischen Erzeugung von Inhalten an, indem er beispielsweise ein Objekt auf der Website anklickt. Durch diese Aktion wird dann ein Skript ausgeführt, dass sich zwischen die HTTP-Kommunikation von Server und Client schaltet und vorher ausgewählte Inhalte lädt. Die AJAX-Engine erfasst den Aufruf des Skriptes (die asynchrone Anfrage) und führt eine XML-Anfrage an den Server oder eine Datenbank durch, um die Inhalte zu finden. Die gewählten Elemente werden durch das Skript dann auf der Website dynamisch geladen oder ausgeführt.[1]
Funktionsweise
Das AJAX Crawling Scheme sorgt dafür, dass dynamisch generierte Inhalte für Crawler, Bots oder Spider lesbar werden. Da diese Programme, die das weltweite Internet ständig analysieren, weder dynamisch erzeugte Webinhalte noch Skripte interpretieren können, versucht das Schema, eine Momentaufnahme (HTML Snapshot) des aktuellen Inhalts auf dem Server zu hinterlegen. Durch die HTML-Auszeichnungen sind die Inhalte auch für textbasierte Crawler lesbar, weil sie im Grunde in zwei unterschiedlichen Versionen vorliegen. Um eine Website für das Crawling Scheme vorzubereiten, sind mehrere Schritte nötig:[2]
- Der erste Schritt besteht darin, auf der Website zu notieren, dass das AJAX-Crawling Scheme unterstützt wird. Eine herkömmliche Website könnte folgende URL haben:
http://www.beispiel-domain.de/ajax.html#key=value
Die Beispieldomain, deren Inhalte dynamisch erzeugt werden, wird um das Zeichen ! ergänzt. Es folgt auf das Zeichen #: An dieser Stelle fangen die Hash Fragmente an – also alles, was bei einer dynamischen Abfrage erzeugt werden würde (meist Attribut und Wertpaare oder Ids). Die Form der URL wird auch als AJAX-URL bezeichnet. Die Kombination aus ! Und # wird oft als Hashbang beschrieben.
http://www.meine-domain.de/ajax.html#!key=value
Durch diese Notation wird dem Crawler mitgeteilt, dass es sich um eine Website handelt, die das AJAX Crawling Scheme unterstützt.
- Im zweiten Schritt wird für jede dynamisch erzeugte URL ein andere URL-Form erstellt. Denn der Server muss die richtige URL ausgeben, sodass der HTML Snapshot referenziert wird. Der Crawler überträgt deshalb die URL
http://www.meine-domain.de/ajax.html#!key=value
in eine andere Form:http://www.meine-domain.de/ajax.html?_escaped_fragment_=key=value
. Nur so weiß der Server, dass der Crawler den Content für die URLhttp://www.meine-domain.de/ajax.html#!key=value
anfordert. Zudem weiß der Server auf diese Weise, dass der Crawler ein HTML Snapshot zurücksenden muss. Die ursprüngliche URL-Form wäre die gleiche und es würden keine crawlbaren Inhalte gesendet werden.
- Im dritten Schritt werden die HTML Snapshots erstellt. Für jede dynamisch erzeugte URL wird ein HTML Snapshot erzeugt und auf dem Server hinterlegt. Es ist gewissermaßen eine durch den Crawler lesbare Kopie der dynamisch erzeugten Inhalte, die nach der Ausführung des JavaScripts bereitgestellt werden. Hierfür existieren verschiedene Möglichkeiten – je nach eingesetzter Technologie oder Skriptsprache. Zum einen können Browser ohne Benutzeroberfläche wie HTMLUnit dazu verwendet werden. Auch Tools wie crawlajax oder watij.com können hilfreich sein, um einen HTML Snapshot zu erstellen. Diese Möglichkeiten sind insbesondere sinnvoll, wenn viele Inhalte per JavaScript erzeugt werden. Falls Technologien wie PHP oder ASP.NET zum Einsatz kommen, kann der bestehende Quellcode benutzt werden, um das HTML serverseitig zu generieren oder die JavaScript-Elemente durch statischen Code zu ersetzen. Die meistgenutzte Möglichkeit ist allerdings, eine statische HTML Website für jede AJAX URL offline bereitzustellen.
- Die Suchmaschine indexiert den HTML Snapshot für jede URL, nicht aber die dynamischen Inhalte, die sie nicht lesen kann. In den SERPs werden die AJAX URLs dargestellt – dies ist eine URL mit einem Hash Fragment wie „key=value“.
Bedeutung für die Suchmaschinenoptimierung
Google arbeitete bekanntlich seit einigen Jahren daran, JavaScript-Elemente durch den Googlebot zu erkennen. Die Mitteilung, dass das AJAX-Crawling Scheme nicht mehr empfohlen wird, kann als Fortschritt bei der Interpretation von Skripten durch den Crawler gesehen werden. Insbesondere vor dem Hintergrund, dass immer mehr Inhalte responsive und geräte-abhängig werden, ist die neue Empfehlung von Bedeutung.
Viele Webmaster nutzen aber noch AJAX-basierte Anwendungen. Die Kernpunkte der häufigsten Fragen und Antworten sind hier zusammengefasst:[3]
- Ältere Websites, die das AJAX Crawling Scheme verwenden, werden auch in Zukunft von Google indexiert – In der Regel nutzt der Crawler dazu aber das URL-Format mit den Hash Fragmenten #!.
- Websites, die das AJAX-Crawling Scheme nicht mehr verwenden, werden nicht als Websiteverschiebungen (Cloaking) betrachtet. Die URL-Form mit „_escaped_fragments_“ sollte jedoch vermieden werden bei der Realisierung von neuen Webprojekten oder Relaunches.
- Wenn Websites für den Googlebot mit einem JavaScript-Framwork vorgerendert werden, sollten die Inhalte auch für den Benutzer vorgerendert werden, um Cloaking zu vermeiden.
Darüber hinaus empfiehlt Google das sogenannte Progressive Enhancement bei der Realisierung von Webprojekten. Die Grundidee besteht darin, dass die Darstellung von Inhalten durch den Browser unabhängig von der verwendeten Technologie sein soll. Bestimmte Funktionen einer Website werden mit ausgelagerten Codebestandteilen (JavaScript und CSS) umgesetzt und diese Elemente werden dann je nach Client oder Endgerät ausgeführt. Zum Beispiel kann die History API aus HTML5 eingesetzt werden. Das neue Verfahren sorgt auch dafür, dass der Crawler Zugang zu allen erforderlichen Dateien erhält. Denn der Googlebot kann nun Websites rendern und sie in den Index aufnehmen, auch wenn JavaScript verwendet wird. Jedoch muss sichergestellt werden, dass JavaScript, CSS und Bilddateien nicht durch die Datei Robots.txt blockiert werden. Ganz allgemein sollte die Zugänglichkeit entsprechend den Qualitätsrichtlinien sichergestellt werden.[4]
Einzelnachweise
- ↑ AJAX Introduction w3schools.com. Abgerufen am 06.11.2015
- ↑ AJAX Crawling (Deprecated) developers.google.com. Abgerufen am 06.11.2015
- ↑ Unser AJAX-Crawlingschema wird eingestellt googlewebmastercentral-de.blogspot.de. Abgerufen am 06.11.2015
- ↑ Richtlinien für Webmaster support.google.com. Abgerufen am 06.11.2015
Weblinks
- How To: Allow Google to Crawl your AJAX Content
- Tipps für das Crawling von AJAX-Inhalten
- Mehr Infos zu Progressive Enhancement