Ein Vorschlag, AJAX crawlbar zu machen

Mittwoch, 14. Oktober 2009

Wir möchten heute gerne einen neuen Standard vorschlagen, um AJAX-basierte Websites crawlbar zu machen. Sowohl Webmaster als auch User können davon profitieren, auf AJAX basierende dynamische und interaktive Websites in den Suchergebnisse jeder Suchmaschine, die dies unterstützt, zugänglich zu machen. Es würde unserer Ansicht nach das Web entscheidend verbessern, diesen Content crawl-und indexierbar zu machen.

AJAX-basierte Websites sind zwar bei Usern beliebt, Suchmaschinen ist es jedoch traditionell nicht möglich, auf diesen Content zuzugreifen. Unsere letzte Untersuchung hat ergeben, dass fast 70 % der uns bekannten Websites in irgendeiner Form JavaScript verwenden. Natürlich handelt es sich bei der Mehrheit dieses JavaScript nicht um AJAX, aber je mehr Suchmaschinen AJAX crawlen und indexieren könnten, desto mehr Entwickler könnten so genannte "rich" Features zu ihren Websites hinzufügen und immer noch in Suchmaschinen auftauchen.

Einige der Ziele unseres Vorschlags sind:
  • Geringe Anpassungen bei einer wachsenden Website

  • User und Suchmaschinen sehen denselben Content (kein Cloaking)

  • Suchmaschinen können User direkt auf die AJAX-URL verweisen (keine statische Kopie)

  • Sitebesitzer können ueberpruefen, ob ihre AJAX-Website richtig erscheint und somit, ob der Crawler Zugriff auf den gesamten Content hat

Hier ist unser Vorschlag, wie Suchmaschinen AJAX crawlen und indexieren könnten:
  • Leichte Veränderung der URL-Teile für statusabhängige AJAX-Seiten
    Statusabhängige AJAX-Seiten zeigen denselben Content, sofern direkt auf sie zugegriffen wird. Diese Seiten könnten in Suchergebnissen auftauchen. Anstelle einer URL wie https://example.com/page?query#state , schlagen wir vor, einen Token hinzufügen, der es ermöglicht, diese URLs zu erkennen: https://example.com/page?query#[FRAGMENTTOKEN]state . Basierend auf einer Untersuchung der URLs, die es zur Zeit im Web gibt, schlagen vor, "!" (ein Ausrufungszeichen) als den Token hierfür zu verwenden. Die URL, die in Suchergebnissen gezeigt werden könnte, wäre dann: https://example.com/page?query#!state .

  • Verwendung eines Browsers ohne GUI, der einen HTML-Snapshot an euren Webserver ausgibt
    Der GUI-freie Browser wird dazu verwendet, auf AJAX-Seiten zuzugreifen und HTML-Code basierend auf dem Endzustand im Browser zu generieren. Nur speziell getaggte URLs werden an den GUI-freien Browser zur Verarbeitung weitergegeben. Da dies auf der Serverseite passiert, hat der Websitebesitzer Kontrolle über den generierten HTML-Code, und er kann leicht verifizieren, dass der gesamte JavaScript ordnungsgemäß ausgeführt wird. Ein Beispiel für einen solchen Browser ist HtmlUnit , ein Open-Source Browser ohne GUI für Java-Programme.

  • Escapen von Statusinformationen, damit Suchmaschinen-Crawler auf diese URLs zugreifen können
    Da URL-Fragmente nie ohne Anfrage zu Servern geschickt werden, ist es notwendig, die URL, die zum Seitenaufruf verwendet wird, leicht zu modifizieren. Gleichzeitig wird dadurch dem Server mitgeteilt, mit dem GUI-freien Browser HTML-Code zu generieren, anstelle die Seite mit JavaScript widerzugeben. Andere existierende URLs - wie etwa die, die von Usern verwendet werden - würden außerhalb des GUI-freien Browsers normal verarbeitet werden. Wir schlagen vor, die Statusinformation mit einem Escape-Zeichen zu versehen und sie zu den Query-Parametern mittels eines Token hinzuzufügen. Um auf das vorherige Beispiel zurückzugreifen, eine derartige URL könnte https://example.com/page?query&[QUERYTOKEN]=state sein. Basierend auf unserer Analyse der URLs im Web schlagen wir vor, "_escaped_fragment_" als Token zu verwenden. Die vorgeschlagene URL wäre dann https://example.com/page?query&_escaped_fragment_=state .

  • Anzeige von Original-URLs in den Suchergebnissen
    User sollten direkt auf die AJAX-basierten Seiten zu verwiesen werden, um eine bessere User-Erfahrung zu bieten. Dies kann erreicht werden, indem die Original-URL (wie etwa https://example.com/page?query#!state aus unserem vorherigen Beispiel) in den Suchergebnissen gezeigt wird. Suchmaschinen können überprüfen, dass der indexierbare Text, der an Googlebot zurückgegeben wird, derselbe oder zumindest ein Auszug des Textes ist, der an die User ausgegeben wird.

(Grafik von Katharina Probst)

Zusammenfassend: Wenn wir von einer statusabhängigen URL wie z. B.
https://example.com/dictionary.html#AJAX ausgehen, so könnte diese für Crawler und User als
https://example.com/dictionary.html#!AJAX aufrufbar sein, und sie könnte als
https://example.com/dictionary.html?_escaped_fragment_=AJAX gecrawlt werden. Die URL würde Usern dann wie folgt gezeigt und als solche aufrufbar sein:
https://example.com/dictionary.html#!AJAX

Hier findet ihr die Original-Präsentation .

Wir arbeiten zur Zeit an der Implementierung eines Prototypen. Euer Feedback ist jederzeit willkommen - bitte postet eure Kommentare hier oder in unserem englischsprachigen Diskussionsforum für Webmaster . Danke für euer Interesse daran, AJAX-basierte Websites für Suchmaschinen erreichbar zu machen!

A proposal for making AJAX crawlable (English version)

Vorschlag von Katharina Probst, Bruce Johnson, Arup Mukherjee, Erik van der Poel und Li Xiao, Google

Post von John Mueller, Webmaster Trends Analyst, Google Zürich (Übersetzung von Claudia, Search Quality)