Die traditionellen Anweisungen von Google zum Einbeziehen der ga.js
Verwendung document.write()
. Selbst wenn ein Browser externe JavaScript-Bibliotheken irgendwie asynchron laden würde, bis tatsächlich Code ausgeführt werden soll, document.write()
würde das Laden der Seite dennoch blockiert. Die späteren asynchronen Anweisungen werden nicht document.write()
direkt verwendet, sondern insertBefore
blockieren möglicherweise auch das Laden von Seiten?
Google setzt den Cache jedoch max-age
auf 86.400 Sekunden (1 Tag und sogar öffentlich , also auch für Proxys). Da viele Websites dasselbe Google-Skript laden, wird das JavaScript häufig aus dem Cache abgerufen. Dennoch , auch wenn ga.js
zwischengespeichert wird, wird oft die Reload - Button einfaches Anklicken einen Browser über Änderungen Google machen fragen . Und dann muss ga.js
der Browser , genau wie wenn er noch nicht zwischengespeichert wurde, auf die Antwort warten, bevor er fortfährt:
GET /ga.js HTTP / 1.1
Gastgeber: www.google-analytics.com
...
If-Modified-Since: Mo, 22 Jun 2009 20:00:33 GMT
Cache-Kontrolle: maximales Alter = 0
HTTP / 1.x 304 Nicht geändert
Letzte Änderung: Montag, 22. Juni 2009, 20:00:33 Uhr GMT
Datum: So, 26. Juli 2009 12:08:27 GMT
Cache-Kontrolle: maximales Alter = 604800, öffentlich
Server: Golfe
Beachten Sie, dass viele Benutzer für Nachrichtenseiten, Foren und Blogs, die sie bereits in einem Browserfenster geöffnet haben, auf "Neu laden" klicken. Dadurch werden viele Browser blockiert, bis eine Antwort von Google eingeht . Wie oft laden Sie die SO-Homepage neu? Wenn die Antwort von Google Analytics langsam ist, werden diese Nutzer dies sofort bemerken. (Es gibt viele im Internet veröffentlichte Lösungen zum asynchronen Laden des ga.js
Skripts, die besonders für diese Art von Websites nützlich sind, aber möglicherweise nicht mehr besser sind als die aktualisierten Anweisungen von Google.)
Sobald das JavaScript geladen und ausgeführt wurde, sollte das tatsächliche Laden des Webfehlers (des Tracking-Bildes) asynchron sein. So blockieren die Beladung des Tracking - Bild sollte nicht etwas anderes, es sei denn , die Seite verwendetbody.onload()
. Wenn der Web-Fehler in diesem Fall nicht sofort geladen werden kann, verschlimmert das Klicken auf "Neu laden" die Situation tatsächlich, da der Browser durch Klicken auf "Neu laden" das Skript erneut anfordert, If-Modified-Since
wie oben beschrieben. Vor dem Neuladen wartete der Browser nur auf den Webfehler, während er nach dem Klicken auf Neuladen auch die Antwort für das ga.js
Skript benötigt.
So Websites Google Analytics verwenden , sollten nicht verwendetbody.onload()
werden . Stattdessen sollte man so etwas wie jQuerys $ (document) .ready () oder das domready-Ereignis von MooTools verwenden .
Siehe auch die Funktionsübersicht von Google , in der erläutert wird, wie Google Analytics Daten sammelt. , einschließlich der Funktionsweise des Tracking-Codes . (Dies macht es auch offiziell, dass Google den Inhalt von Erstanbieter-Cookies sammelt. Das heißt: die Cookies von der Website, die Sie besuchen.)
Update: Im Dezember 2009 hat Google eine asynchrone Version veröffentlicht . Das Obige sollte jedem sagen, dass er ein Upgrade durchführen soll, nur um sicherzugehen, dass ein Upgrade nicht alles löst .