Bis 2017 lud eine typische Seite Dutzende Skripte von Drittanbietern, und die Tracking-Skripte standen in derselben Netzwerk-Warteschlange wie die Inhalte, auf die der Nutzer tatsächlich wartete. Firefox Quantum (Version 57) schrieb seinen Scheduler für Netzwerkanfragen neu, und eine der Änderungen nutzte die Tracking-Protection-Datenbank, um das Laden von Skripten von Tracking-Domains zu verzögern, solange eine Seite noch aktiv lud und renderte. Der Mozilla-Ingenieur Jan Bambas nannte die Technik Tailing.

Die grobe Option war, Tracker schlicht zu blockieren, doch dafür hatte Firefox bereits den Tracking-Schutz, und Blockieren zerstört Seiten, deren Rendering oder Geschäft von diesen Skripten abhängt. Die andere naheliegende Option war, nichts zu tun und zu akzeptieren, dass Analyse- und Werbenutzlasten mit echten Inhalten konkurrierten. Tailing fand den Mittelweg: Nichts wurde deaktiviert, nur herabgestuft.

Anfragen an Tracking-Domains wurden nur zurückgehalten, solange die eigenen Subressourcen der Seite noch luden, und nur für bis zu etwa sechs Sekunden. Dynamisch hinzugefügte oder asynchron geladene Skripte konnten verzögert werden, während Tracking-Bilder, XHRs und alles, was ein Tracking-Skript anforderte, stets verzögert wurden. Da die HTML-Spezifikationen die Download-Planung und Priorisierung dem Browser überlassen, war die Änderung nach den Regeln des Webs zulässig, und gut gebaute Seiten zeigten keinen funktionalen Unterschied, weil nichts, was sie anzeigten, von einem Tracker abhing.

Der Gewinn bei der Seitenladeleistung entstand dadurch, dass Netzwerkbandbreite, I/O und CPU für die Bilder und Skripte gespart wurden, die die Seite selbst benötigte. Die sichtbaren Kosten trafen schlecht gebaute Seiten: Googles A/B-Testing-Snippet, das eine Seite mit Opazität null verbarg, bis ein Skript von www.google-analytics.com sie wieder einblendete, konnte die Seite vier Sekunden lang leer lassen, und eine Seite wie L'Équipe, die Twitters API aus einem synchronen Skript aufrief, scheiterte, als das verzögerte asynchrone Skript noch nicht da war. Bambas argumentierte, diese Seiten hätten nur durch Glück funktioniert, da dieselben Wettläufe sie auch im privaten Modus oder mit Tracking-Schutz brachen.

Verzögern statt blockieren: Anfragen an Tracking-Domains zurückhalten, bis die eigenen Ressourcen der Seite fertig sind, und sie dann freigeben

Tracker werden selten zum Rendern einer Seite benötigt, sodass ihre Verzögerung Bandbreite, I/O und CPU für die eigenen Ressourcen der Seite freigibt, ohne sichtbar zu ändern, was der Nutzer sieht.

Verzögern statt Blockieren hält die Funktion innerhalb der HTML-Spezifikationen und zerstört weder Analyse- noch Werbeökonomie, sondern verschiebt sie nur.

Die Tracking-Protection-Datenbank klassifizierte bereits Drittanbieter-Domains, sodass der Scheduler ein Prioritätssignal erhielt, ohne eine neue Liste aufzubauen oder zu pflegen.

Seiten, die brachen, hingen zum Rendern von Trackern ab oder von einem Wettlauf, der nur gewonnen wurde, weil Tracker-Server schnell antworteten; die Regressionen legten also echte Fragilität offen statt einer falschen Abwägung.

Wenn man einen Kostenfaktor nicht entfernen kann, sollte man ihn neu terminieren: Halte Arbeit mit geringem Wert zurück, bis das für den Nutzer sichtbare Laden abgeschlossen ist, und man erzielt den größten Teil des Nutzens ohne den Streit

Tailing wurde in Firefox 57 (Quantum) ausgeliefert. Bambas' Erläuterung von Dezember 2017 erzeugte einen Hacker-News-Thread mit 472 Punkten und 261 Kommentaren sowie Berichterstattung von Bleeping Computer und gHacks. Die von Mozilla protokollierten Regressionen, darunter Googles seitenverbergendes Snippet, das Seiten bis zu vier Sekunden lang leer ließ, gingen an Bugzilla, und Bambas argumentierte, betroffene Seiten müssten repariert werden, um die neue Planung zu übernehmen. Er fügte hinzu, eine breitere Messung sei noch unterwegs und lokale Tests hätten den Gewinn im Rauschen verborgen gezeigt, sodass der volle Nutzen noch nicht quantifiziert sei.

DEN BELEGEN FOLGEN

Die Quellen

  1. Firefox 57 delays requests to tracking domains Jan Bambas's blog · janbambas.cz ·
  2. Firefox 57 delays tracking domains gHacks Tech News · ghacks.net ·
  3. Hacker News discussion: Firefox 57 delays requests to tracking domains Hacker News · news.ycombinator.com ·