Wir sind kürzlich auf ein Problem gestoßen, bei dem wir var GLOBAL_VAR = true;
einer HTML-Seite (z. B. ) eine JavaScript-Variable (z. B. ) hinzugefügt /Search/Index
und die separate JS-Datei (z. B. ) aktualisiert haben, /Scripts/search/index.js
um auf diese JS-Variable zuzugreifen und sie zu verwenden. Nachdem wir diese Änderungen live im Web veröffentlicht hatten, wurden von Googlebot generierte JS-Fehler angezeigt, die von unserer window.onerror
Funktion an uns gesendet wurden . Die Fehler sind wie folgt:
Nicht erfasster Referenzfehler: GLOBAL_VAR ist nicht definiert
Linie 1
Wenn ich die Seite / Suche / Index auf unserer Website besuche, sehe ich deutlich, dass die neue JS-Variable vorhanden und definiert ist.
Es ist fast so, als würde Googlebot beim Crawlen unserer Website nicht erkennen, dass sich die HTML-Seite geändert hat. Das bedeutet, dass altes, zwischengespeichertes HTML verwendet wird, das die Einstellung der GLOBAL_VAR
Variablen nicht enthält , was den JS-Fehler verursacht.
Wir haben die HTML / JS-Änderungen am 06.02. Veröffentlicht und erhalten ab dem 10.02. Immer noch JS-Fehler. Ich hätte gedacht, Googlebot würde die HTML-Änderungen inzwischen erkennen. Wir haben dieses Problem in der Vergangenheit noch nie erlebt.
Warum sollte Googlebot den Cache nicht aktualisieren, wenn sich der HTML-Code einer Seite ändert? Wie können wir Googlebot vor allem dazu bringen, die HTML-Änderungen zu erkennen und ihren Cache zu aktualisieren, damit diese JS-Fehler nicht mehr auftreten?
2019 UPDATE - Eine Sache, die ich hier hinzufügen möchte, ist, dass wir Microsoft Azure Cloud Services verwenden, die über eine Produktions- und eine Staging-Umgebung verfügen. Wir veröffentlichen in Staging, tauschen Staging in Produktion aus, testen die neue Produktion und löschen dann Staging. Das oben beschriebene Szenario scheint nur beim Austauschen / Löschen von Umgebungen aufzutreten, daher muss es etwas damit zu tun haben. Es ist, als würde Googlebot unsere Website crawlen, wenn wir Staging / Produktion austauschen, und es werden einige Daten aus dem Staging und einige aus der Produktion abgerufen, wodurch die zwischengespeicherten Ressourcen von unserer Website verzerrt werden. Es passiert immer noch und füllt immer noch unsere Fehlerprotokolle.
quelle
window.onerror
um jeden JS-Fehler über Ajax an unseren Server zu senden.Antworten:
Der einfachste Weg, dies zu lösen, besteht darin, Ihre JavaScript-Dateien zu versionieren. Dann rufen nur neue Seiten das neue JavaScript ab.
quelle