Der Standardcode von Google Analytics ist aufgebläht und langsam. Mathias Bynens beschreibt in dem Artikel Optimizing the asynchronous Google Analytics snippet wie man den Code verkürzen und erheblich verschnellern kann (vgl. Studie auf JSperf).
Damit aber nicht genug, denn man kann aus dem JavaScript nocht mehr herausholen. Wie in YoastsGoogle Analytics Plugin für WordPress will ich jedem Link, der von meiner Website führt, ein Tag “outbound” geben, sodass dies dann bei Google Analytics aufgeführt wird und ich weiß, wann der Besucher meine Seite verlassen hat.
Das kann man serverseitig mit dem Plugin lösen, oder auch vom Browser des Users selbst “berechnen” lassen und somit Bandbreite und Rechenaufwand sparen.
In Summe sieht das Skript gekürzt und verschlankt so aus: <script>var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']];(function(d){var
g=d.createElement('script'),i,a;g.async=1;g.src='http://www.google-analytics.com/ga.js';d.head.appendChild(g);for(i=0;i<d.getElementsByTagName('a').length;
i++){a=d.getElementsByTagName('a')[i];if(!a.getAttribute('onclick'))if(window.location.hostname!=a.hostname)
a.setAttribute('onclick',"javascript:_gaq.push(['_trackEvent','outbound','"+a.href+"']);");}}(document))</script>
Damit funktioniert es wunderbar und Du musst lediglich den Code jetzt neu, vor dem Inhaltsende (</body>) einfügen.
Um Deinen Code zu bekommen, generiere selbigen hier:
Um Deinen individuellen Tracking-Code zu erhalten, gib hier die gewünschte ID ein:
Füge diesen Code vor dem Tag </body> ein:
Mit dem deutschen Datenschutz-Feature _anonymizeIp:
Soeben habe ich eine menge Blogs auf das neue WordPress 3.0 mit dem Releasenamen “Thelonious” in der de_DE-Version portiert.
Bei den meisten Blogs hat das Upgrade problemlos funktioniert, nur bei einem leider nicht.
Der Blog zeigt an sich nur statische Seiten an, weswegen ich mein Template so umgebogen habe, dass es keine weiteren Funktionen gibt und lediglich eine Theme-Datei geladen werden muss.
Um möglichst viele Rechenoperationen zu sparen hatte ich im Design für die Anzeige des Contents lediglich geschrieben:
Das führte dazu, dass nach dem Update der gesamte Content nicht angezeigt wurde.
Das Problem lässt sich einfach lösen, wenn man den Inhalt mit folgendem Code anzeigt:
Rechnet zwar ein paar Millisekunden länger aber das sollte keine Probleme machen.
Daher noch ein paar Empfehlungen für eine schnelle Auslieferung:
Fasst so viele Dateien zusammen, wie möglich. Dies sowohl bei den CSS- als auch JS-Files aber auch unbedingt die internen PHP-Aufrufe minimieren.
Installiert das WP-Cache-Plugin um möglichst viele Seiten statisch auszuliefern
Komprimiert euren Code
Optimiert eure Datenbank und euren Webserver auf minimale Timeouts, sodass diese lediglich so lange laufen wie nötig, aber so kurz wie möglicht.
Für einen Kunden habe ich gestern folgende Methode implementiert um effektiv die Unternehmensadressen für Spambots unzugänglich zu machen.
Das Prinzip ist relativ einfach, denn der gewünschte E-Mail Link wird folgendermaßen gesetzt: <a href="mailto:#" title="username">username --at-- example . de</a>
Damit funktioniert der Klick auf die E-Mail-Adresse noch nicht. Der gesetzte title-Tag verrät aber schon, dass aus diesem die E-Mail-Adresse erzeugt werden soll, sodass man doch mit einem Klick den Empfänger im zum Beispiel Microsoft Outlook schon gesetzt hat.
Es reicht jetzt am Seitenende folgendes JavaScript zu laden: for(var i=0; i<document.getElementsByTagName('a').length; i++)
if(document.getElementsByTagName('a')[i].href.match(/mailto:/))
document.getElementsByTagName('a')[i].href =
'mailto:'+document.getElementsByTagName('a')[i].getAttribute('title') +'@example.de';
Wichtig ist dabei, dass der Code im Template am Ende eingefügt wird, am besten vor oder nach dem schließenden body-Tag.
In dem kurzen JavaScript-Snippet wird jeder Link auf der Seite betrachtet, falls er “mailto:” enthält, wird der Link mit “mailto:$title@exmaple.de” ersetzt. Wobei $title eben den Wert des gesetzten Attributs enthält.
Ziemlich einfach, oder?
Damit kann man als Webdesigner den Kunden einfach zufrieden stellen und das Layout bzw. Webtemplate schnell und effektiv absichern.