Google hat die Hinweise zu den Rendering-Fähigkeiten des Googlebots aktualisiert. Nicht unterstützt werden zum Beispiel die Bestätigung erforderlicher Nutzerfreigaben und das WebSocket-Protokoll.
Der Googlebot ist inzwischen in der Lage, Webseiten so darzustellen wie ein moderner Browser. Sogar JavaScript-Code kann ausgeführt werden, was insbesondere bei dynamischen Webseiten mit AJAX-Technologie und Single Page Applications von Vorteil ist.
Welche Features auf Websseiten vom Googlebot unterstützt werden und welche nicht, hat Google jetzt in einer neuen Dokumentation beschrieben.
Google verwendet zum Rendern von Webseiten den Web Rendering Service (WRS), der auf Chrome 41 basiert. Eine komplette Liste der unterstützten Features ist hier zu finden.
Zu den nicht unterstützten Funktionen und Technologien gehören die folgenden:
- WebSocket-Protokoll: Dieses bidirektionale Protokoll erlaubt dem Server das unaufgeforderte Senden von Daten, nachdem einmal eine Verbindung durch den Client geöffnet wurde. Zu diesem Zweck bleibt die zugrundeliegende TCP-Verbindung bestehen.
- IndexedDB und WebSQL-Interfaces zur Datenhaltung im Browser
- Inhalte, die erst nach Zustimmung des Nutzers angezeigt werden (z.B. nach dem Akzeptieren von AGB).
Zudem werden zwischen zwei Seitenaufrufen stets die Inhalte des Local Storages sowie des Session Storages gelöscht und HTTP-Cookies entfernt.
Google: Feature Detection und Polyfills nutzen
Google empfiehlt, beim Bau von Webseiten auf Feature Detection zu setzen, eine Technik, mit der geprüft werden kann, welche Fähigkeiten ein Browser besitzt, um danach entsprechende Funktionen anzubieten.
Auch Polyfills sind laut Google vorteilhaft - sie ermöglichen es, mit Hilfe von JavaScript Funktionen in älteren Browsern bereitzustellen, die es dort ansonsten nicht gäbe.
Wenn das Rendern nicht klappt: Fehlersuche
Um zu testen, ob Google eine Webseite korrekt rendert, sollte die Funktion "Abruf wie durch Google" in der Google Search Console genutzt werden. Dort kann man schnell erkennen, ob es bei der Darstellung Probleme gibt.
Fehler bei der Ausführung von JavaScript-Code können erfasst und geloggt werden, um die Grundlage für Optimierungsmaßnahmen zu erhalten. Dazu können Fehler entweder direkt im Browser dargestellt oder an einen separaten Service gesendet werden. Auch die Übermittlung der Ergebnisse an Google Analytics ist möglich.
window.addEventListener('error', function(e) {
var errorText = [
'Message: ' + e.message,
'URL: ' + e.name,
'Line: ' + e.lineno,
'Column: ' + e.colno,
'Stack: ' + (e.error && e.error.stack || '(no stack trace)')
].join('\n');
// Example: log errors as visual output into the host page.
// Note: you probably don’t want to show such errors to users, or
// have the errors get indexed by Googlebot; however, it may
// be a useful feature while actively debugging the page.
var log = document.createElement('pre');
log.style.position = 'fixed';
log.textContent = errorText;
document.body.appendChild(log);
// Example: log the error to remote service.
// Note: you can log errors to a remote service, to understand
// and monitor the types of errors encountered by regular users,
// Googlebot, and other crawlers.
var client = new XMLHttpRequest();
client.open('POST', 'https://example.com/logError');
client.setRequestHeader('Content-Type', 'text/plain;charset=UTF-8');
client.send(errorText);
// Example: log the error to Google Analytics
// Note: same as above, but assumes that you’ve loaded ga.js already
// and want to log the error as a Google Analytics event.
ga('send', 'event', {
eventCategory: 'Error',
eventAction: e.name || '(no error name)',
eventLabel: errorText,
nonInteraction: true
});
});
Mit diesen Möglichkeiten sollte dem Erstellen von Webseiten, die vom Googlebot korrekt gerendert werden können, nichts mehr im Wege stehen.
Titelbild © AKS - Fotolia.com