Les CDNs des GAFAM n’ont plus d’intérêt…
Le 20 janvier 2022 le tribunal de Munich a condamné l’utilisation de Google Font sur un site web. Le tribunal considère que l’appel vers le CDN de Google Font équivaut à la « perte de contrôle du demandeur sur une donnée personnelle » en l’occurrence l’IP du visiteur.
Sans rentrer dans les détails de cette décision qui s’appuie sur le Règlement Général de la Protection des Données, il est très facile de se conformer à cette décision ! Il suffit de stocker et d’envoyer les polices utilisées sur son site depuis son propre domaine.
Et la web perf ?⌗
Ce choix semble contre-productif en termes de performance web aux yeux de nombreux développeurs. Pour une raison extrêmement simple : si nous utilisons le CDN de Google Font alors il y a de grande chance que le visiteur ait déjà cette ressource dans son cache navigateur et cela accélèrera le temps d’affichage et donc l’expérience utilisateur.
C’était vrai, mais cela ne l’est plus depuis plus d’un an !
Partitionnement du cache⌗
Maintenant les navigateurs (depuis Firefox 85, Chrome 86 etc…) n’autorisent plus cela pour empêcher le suivi des utilisateurs. Les navigateurs font du partitionnement de cache. Cela veut dire que la ressource sera bien mise en cache, mais seulement pour le domaine que nous sommes en train de visiter.
Ainsi, si vous consultez les pages du site toto.com qui inclut la police Roboto via Google Font, alors celle-ci sera téléchargée à la première page consultée, puis utilisé depuis le cache pour toutes les autres pages du site A. Maintenant si vous allez sur le site tutu.com qui inclut lui aussi la police Roboto via Google Font, alors votre navigateur ne la trouvera pas dans son cache pour ce site précis et va donc la téléchargée à nouveau…
Voilà à quoi ressemble les noms des caches partitionnés :
fonts.googleapis.com/css?family=Roboto-toto.com
fonts.googleapis.com/css?family=Roboto-tutu.com
Il n’y a donc plus aucun intérêt à utiliser le CDN de Google Font, mais également tous les autres CDNs pour d’autres ressources (par exemple Jquery).
Cela oblige votre visiteur a, en plus de télécharger la ressouce, faire un appel DNS supplémentaire pour résoudre le nom de domaine. Il vaut mieux la mettre sur son propre domaine (ou son propre CDN) et profiter par ailleurs d’HTTP/2 (si vous l’utilisez)
Pour ce billet je me suis inspiré du billet anglais « Say goodbye to resource-caching across sites and domains » de « Stefan Judis »