AJAX Crawling Scheme

Der Weg, um dynamische Inhalte bereitzustellen: AJAX Crawling Scheme

Google und Co. setzten bereits seit annähernd sieben Jahren auf bestimmte Verfahren, um gezielt Webseiten zu crawlen, die ihrerseits dynamische Inhalte zur Verfügung stellen. Das sogenannte AJAX Crawling Scheme wurde mit dem 15. Oktober 2015 durch Google nicht mehr empfohlen, es wurde als veraltet tituliert. Anstelle dessen sollen History API von HTML5 sowie das in Fachkreisen als Progressive Enhancement bezeichnete Verfahren genutzt werden, um sicherzustellen, dass Crawler einen Zugang zu ausgewählten Inhalten bekommen.

Um die Relevanz dieses Themas bewerten zu können, müssen wir uns kurz mit dem Grundsätzlichen von AJAX-basierten Webanwendungen beschäftigen. Diese werden gewissermaßen asynchron übertragen zwischen Browser und Server. Der Vorteil liegt auf der Hand: Einfache HTTP-Anfragen lassen sich mittels XML (HTTP Request) sowie JavaScript zum Zeitpunkt einer laufenden Browsersitzung durchführen, ohne dass dabei die HTML-Seite neu geladen werden muss – die Inhalte können dabei vom Server oder einer Datenbank bezogen werden. In der Praxis hat dies enorme Vorteile gegenüber statischen HTML-Seiten, denn bereits übertragene Formulardaten lassen sich vom Browser übernehmen oder ändern.

Eine Unterbrechung zwischen Client und Server findet nicht statt, denn der Nutzer kann Inhalte dynamisch erzeugen, indem dieser mit den Objekten auf der Seite hantiert. Dies wiederum initiiert ein Skript, welches zwischengeschaltet ist zwischen HTTP-Kommunikation des Servers und des Clients, sodass die entsprechenden Inhalte geladen werden können. Die asynchrone Anfrage wird im Hintergrund mittels AJAX-Engine erfasst und setzt die XML-Anfrage an Server oder Datenbank in Gang, um den jeweiligen Inhalt aufzusuchen. Diese Objekte oder Elemente werden dynamisch nachgeladen oder ausgeführt, ohne dass die Seite dafür neu geladen werden müsste.

Dynamisch generierte Inhalte lesbar machen: Das AJAX Crawling Scheme

Warum ist das Ganze eigentlich notwendig? Nun, Crawler, Bots sowie Spider sind Faktoren, die für Suchmaschine eine große Rolle spielen. Sie lesen Inhalte aus, analysieren und ordnen somit Suchergebnisse – je besser, desto relevanter und desto signifikanter für die jeweilige Suchmaschine. Allerdings ist diese Funktionsweise nicht bei dynamisch erzeugten Webinhalten einsetzbar, ebenso wenig bei Skripten. Die Lösung des Problems besteht nun darin, einen HTML Snapshot (Momentaufnahme) zu erzeigen und damit den jeweils aktuellen Inhalt auf einem Server zu speichern. Dadurch können textbasierte Crawler die jeweiligen Inhalte auslesen.

Damit eine Webseite gemäß dem AJAX Crawling Scheme analysiert werden kann, bedarf es der Umsetzung mehrerer Schritte.

  • Im ersten Schritt geht es darum, in die Webseite zu integrieren, dass das AJAX Crawling Scheme überhaupt unterstützt wird.

  • Beispiel-URL: http://www.suchhelden-test.de/ajax.html#key=value

    Unter dieser URL befinden sich (theoretisch) dynamisch erzeugte Inhalte. Die URL wird um das Zeichen ! ergänzt, direkt nach dem Zeichen #. Erst hier kommen Hash-Fragmente ins Spiel, wo sich später dann all das wiederfindet, was im Zuge einer dynamischen Abfrage erzeugt wird (Attribute, Wertpaare, Ids, etc.). In der Fachsprache wird dies als Hashbang bezeichnet, die URL entspricht nun der Form einer AJAX-URL.

    AJAX-URL: http://www.suchhelden-test.de/ajax.html#!key=value

    Der Crawler weiß nun, dass das AJAX Crawling Scheme auf dieser Seite unterstützt wird.

    • Im zweiten Schritt geht es darum, jede dynamisch generierte URL mit einer anderen URL-Form zu verknüpfen. Dies ist notwendig, um einen HTML Snapshot zu referenzieren, also richtig auszugeben.

    Durch den Crawler wird damit die URL

    http://www.suchhelden-test.de/ajax.html#!key=value

    in die Form

    http://www.suchhelden-test.de/ajax.html?_escaped_fragment_=key=value

    Auf diese Weise ist dem Crawler bekannt, dass Content für die eigentliche URL angefordert wird. Der Server erhält einen HTML Snapshot durch den Crawler zurückgesandt, was zur Folge hat, dass die Ursprungs-URL angezeigt wird und nicht die dynamischen, crawlbaren Inhalte.

    • Im dritten und letzten Schritt geht es um die Erstellung der HTML Snapshots. Jede dynamisch erzeugte URL weist einen HTML Snapshot auf, der auf dem Server gespeichert wird. Das ist eine Kopie, die der Crawler lesen kann, die unmittelbar nach Java-Script-Ausführung erstellt wird. Die Art und Weise, mittels welcher Technologie dies geschieht, ist unterschiedlich. Möglich wäre die Verwendung von HTMLUnit, ein Browser ohne Benutzeroberfläche. Denkbar sind aber auch Tools wie watij.com oder crawlajax zur Erstellung von HTML Snapshots. Je mehr Inhalte via JavaScript erzeugt werden, desto sinnvoller ist die Wahl einer dieser Technologien.

    Beim Einsatz von PHP oder ASP.NET ist es möglich, den existierenden Quellcode zu nutzen, um HTML serverseitig zu generieren und Elemente, die durch JavaScript erzeugt wurden, durch einen statischen Code auszutauschen. In der Praxis kommt jedoch am meisten vor, dass eine statisch generierte HTML-Seite für jeweils jede AJAX-URL offline bereitgestellt wird.

    Die Darstellung der AJAX URLs findet in den SERPs statt, die Suchmaschine indexiert den HTML Snapshot, nicht aber die dynamischen Inhalte.

    Was hat das AJAX Crawling Scheme mit Suchmaschinenoptimierung zu tun?

    Bekannt ist, dass Google seit vielen Jahren daran arbeitet, JavaScript-Elemente als solche mittels Googlebot zu erkennen. Die Interpretation sei daher erlaubt, dass Google mit Wegfall der Empfehlung des AJAX Crawling Schemes entsprechend Fortschritte erzielt hat, um Skripte mittels Crawler zu lesen. Wer mit seinem Internetangebot sich stark auf mobile Endgeräte fokussiert und dabei entsprechend responsive Designs wählt, sollte jetzt aufhorchen.

    Welche Bedeutung hat der Paradigmenwechsel in Bezug auf das AJAX Crawling Scheme für Webmaster, die noch nicht technisch aufgerüstet haben?

    • Derartige Webseiten werden weiter indexiert, wenn auch mit Hash-Fragmenten.

    • Wer nicht mehr auf AJAX Crawling Scheme setzt, wird in der Form nicht als „Cloaking“ gekennzeichnet – Nicht erkannt als Webseitenverschiebung. Zu vermeiden wäre jedoch die URL-Form „_escaped_fragments_“.

    • Analog zu Punkt 2: Sofern Seiten mit JavaScript-Framework vorgerendert werden, sollte dies auch für Benutzer gelten, um seinerseits ein Cloaking zu vermeiden.

    Empfehlung durch Google: Progressive Enhancement

    Moderne Ansätze in der Suchmaschinenoptimierung gehen in die Richtung, dass Inhalte unabhängig von der verwendeten Technologie des Browsers dargestellt werden sollen. Man spricht von Progressive Enhancement. Vor allem Seiten mit einem hohen Grad an Funktionen sind mit JavaScript und CSS verknüpft, diese Funktionen sind ausgelagert und entsprechend vom Client oder Endgerät ausgeführt. Ein gängiges Beispiel dafür ist History API in HTML5.

    Mit derartigen Verfahren ist es dem Crawler möglich, die benötigten Dateien zu erhalten. Die Aufnahme durch den Googlebot geschieht mittels Rendern der Webseite, unabhängig davon, ob JavaScript verwendet wurde oder nicht. Wichtig ist hierbei nur, dann keine Blockade durch die robots.txt gegeben ist, die auf JavaScript, CSS oder Bilddateien wirkt.