En 2017, une page typique chargeait des dizaines de scripts tiers, et ceux de suivi occupaient la même file réseau que le contenu que l'utilisateur attendait réellement. Firefox Quantum (version 57) a réécrit son ordonnanceur de requêtes réseau, et l'une des modifications utilisait la base de données de protection contre le suivi pour retarder le chargement des scripts issus de domaines de suivi pendant qu'une page était encore en cours de chargement et de rendu. L'ingénieur de Mozilla Jan Bambas a appelé cette technique le « tailing ».

L'option brutale consistait à bloquer purement et simplement les traqueurs, mais Firefox disposait déjà de la protection contre le suivi pour cela, et le blocage casse les sites dont le rendu ou l'activité dépend de ces scripts. L'autre option évidente était de ne rien faire et d'accepter que les charges utiles d'analyse et de publicité rivalisent avec le contenu réel. Le tailing coupait la poire en deux : rien n'était désactivé, seulement dépriorisé.

Les requêtes vers des domaines de suivi n'étaient retenues que pendant le chargement des sous-ressources du site lui-même, et seulement pendant environ six secondes au maximum. Les scripts ajoutés dynamiquement ou chargés en asynchrone pouvaient être retardés, tandis que les images de suivi, les XHR et tout ce qu'un script de suivi demandait étaient toujours retardés. Comme les spécifications HTML laissent l'ordonnancement et la priorisation des téléchargements au navigateur, la modification était légale selon les règles du web, et les sites bien conçus ne voyaient aucune différence fonctionnelle car rien de ce qu'ils affichaient ne dépendait d'un traqueur.

Le gain de performance de chargement des pages venait de l'économie de bande passante réseau, d'E/S et de CPU pour les images et scripts dont le site lui-même avait besoin. Le coût visible retombait sur les sites mal conçus : l'extrait de test A/B de Google, qui masquait une page avec une opacité nulle jusqu'à ce qu'un script de www.google-analytics.com la révèle, pouvait laisser la page blanche pendant quatre secondes, et un site comme L'Équipe qui appelait l'API de Twitter depuis un script synchrone échouait lorsque le script asynchrone retardé n'était pas encore là. Bambas soutenait que ces sites n'avaient fonctionné que par chance, puisque les mêmes conditions de course les cassaient en navigation privée ou avec la protection contre le suivi.

Retarder au lieu de bloquer : retenir les requêtes vers les domaines de suivi jusqu'à ce que les ressources propres à la page soient terminées, puis les libérer

Les traqueurs sont rarement nécessaires au rendu d'une page, donc les retarder libère bande passante, E/S et CPU pour les ressources propres au site sans modifier visiblement ce que l'utilisateur voit.

Retarder au lieu de bloquer maintient la fonctionnalité dans le cadre des spécifications HTML et ne détruit pas l'économie de l'analyse ou de la publicité, elle ne fait que la reporter.

La base de données de protection contre le suivi classait déjà les domaines tiers, l'ordonnanceur a donc gagné un signal de priorité sans créer ni maintenir une nouvelle liste.

Les sites qui cassaient dépendaient de traqueurs pour leur rendu ou d'une condition de course qui ne gagnait que parce que les serveurs de traqueurs répondaient vite ; les régressions exposaient donc une fragilité réelle plutôt qu'un mauvais compromis.

Quand vous ne pouvez pas supprimer un coût, replanifiez-le : retenez le travail de faible valeur jusqu'à ce que le chargement visible par l'utilisateur soit terminé, et vous captez l'essentiel du bénéfice sans le conflit

Le tailing a été intégré à Firefox 57 (Quantum). L'explication de Bambas de décembre 2017 a suscité un fil Hacker News de 472 points et 261 commentaires, ainsi qu'une couverture de Bleeping Computer et gHacks. Les régressions consignées par Mozilla, notamment l'extrait de masquage de page de Google qui blanchissait les pages jusqu'à quatre secondes, ont été transmises à Bugzilla, et Bambas soutenait que les sites concernés devaient être corrigés pour adopter le nouvel ordonnancement. Il ajoutait qu'une mesure plus large était encore à venir et que les tests locaux avaient montré un gain noyé dans le bruit, le bénéfice complet n'était donc pas encore quantifié.

VÉRIFIEZ LES SOURCES

Les sources

  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 ·