Présentation de l'API Storage interorigine

Date de publication : 10 novembre 2026

Les applications Web modernes dépendent souvent d'assets volumineux, tels que des frameworks JavaScript, des moteurs de jeu et des modèles d'IA. Même si les sites utilisent des éléments identiques, chacun doit télécharger et stocker sa propre copie de chaque élément.

Avec l'API Cross-Origin Storage (COS), le client spécifie le contenu qu'il recherche par son hachage et le récupère à partir de n'importe quelle URL pour le partager sur les sites désignés (ou tous les sites). Cela signifie qu'une ressource exacte et connue peut être partagée entre plusieurs sites, indépendamment de la diffusion de l'élément. Cette proposition présente des avantages en termes de sécurité, mais aussi des défis.

Cas d'utilisation

Nous avons longuement parlé de l'importance de la mise en cache des modèles et de la mise en cache de n'importe quel asset avec l'API Cache Storage. L'API Storage interorigine va encore plus loin et peut être utile lorsque plusieurs sites Web associés (ou non) ont besoin d'accéder à la même ressource :

  • Modèles d'IA : les modèles tels que Gemma ou les variantes de Llama pèsent entre un gigaoctet et plusieurs dizaines de gigaoctets. Le stockage et la récupération d'une copie via COS évitent les téléchargements massifs de doublons. C'est l'une des principales motivations de la proposition.
  • Modules Wasm : les frameworks tels que Flutter envoient des fichiers Wasm qui sont demandés des millions de fois par jour sur des milliers d'origines distinctes, toujours identiques au niveau des octets.
  • Bibliothèques et frameworks JavaScript populaires : le regroupement du code du fournisseur séparément et dans son intégralité (comme la bibliothèque React complète, sans treeshaking) permet à plusieurs applications de partager une copie mise en cache via COS.
  • Moteurs de jeu : les jeux par navigateur créés sur des moteurs comme Godot ou Unity peuvent partager l'environnement d'exécution du moteur via COS et ne récupérer que les éléments spécifiques au jeu sur le réseau. Les portails de jeux qui hébergent de nombreux jeux grand public provenant de différentes sources ou d'iframes sont ceux qui en bénéficient le plus.
  • Polices Web volumineuses : les polices d'icônes, les polices d'emoji et les polices avec une large couverture Unicode sont téléchargées sur un très grand nombre de pages. Leur partage une seule fois via COS contribue à la fois aux performances et à la durabilité.
Deux jeux Three.js non liés, Descent et Quake, partagent une copie du moteur via COS, inspectée dans les outils de développement.
Deux jeux Three.js non liés, Descent (dans l'onglet en arrière-plan) et Quake (dans l'onglet au premier plan), partagent une copie du moteur via COS, inspectée dans les outils de développement. Cette capture d'écran provient d'une version expérimentale de Chromium et peut ne pas refléter la conception finale.

Le flux de base pour travailler avec COS

L'API COS introduit une méthode navigator.crossOriginStorage.getFileHandle() qui permet aux applications Web de stocker et de récupérer des fichiers au-delà des limites d'origine, identifiés par un hachage cryptographique. Le document explicatif contient un exemple qui montre le flux de base de l'utilisation de l'API.

Essayer aujourd'hui

Vous pouvez tester COS de deux manières dès maintenant :

  • Installez une extension de navigateur depuis le Chrome Web Store, les modules complémentaires Firefox ou le magasin d'applications Safari pour polyfiller la surface de l'API et toutes les intégrations. Vous pouvez tester le flux d'API dans n'importe quel navigateur. Vous pouvez également charger l'extension décompressée à partir de son code source.
  • Test dans Chromium : une implémentation expérimentale de Chromium est disponible. Téléchargez-le pour macOS sur Apple Silicon ou Linux x86_64 depuis goo.gle/cos-chromium, puis ouvrez about://flags, recherchez "Stockage interorigine", définissez-le sur Activé et redémarrez lorsque vous y êtes invité. Cette version inclut une intégration des outils de développement : recherchez Stockage interorigine dans l'onglet Application.

Intérêt pour l'écosystème

La proposition COS en est à ses débuts, et un certain nombre de projets proposent déjà une compatibilité expérimentale, généralement derrière un flag d'activation et sous forme d'amélioration progressive :

  • Emscripten partage la sortie Wasm générée.
  • Flutter partage son environnement d'exécution Skia Wasm.
  • Transformers.js partage les pondérations de modèle et les environnements d'exécution Wasm dont ils dépendent.
  • WebLLM partage des modèles et des environnements d'exécution.
  • wllama partage des modèles d'IA.
  • Nuxt.js charge les dépendances partagées depuis le stockage interorigine et gère un plug-in Vite COS.
  • Prompt API Polyfill partage des modèles d'IA entre ses backends WebLLM et Transformers.js.
  • Prebid.js dispose d'une distribution CDN de la bibliothèque d'enchères d'en-tête compatible avec le COS.

Standardisation

Le stockage interorigine est une proposition du WICG qui en est à ses débuts. Vous pouvez lire l'examen de conception du TAG du W3C.

N'hésitez pas à nous faire part de vos commentaires sur l'API et la proposition. Vous pouvez signaler des problèmes, demander de l'aide ou ouvrir des demandes d'extraction dans le dépôt de stockage interorigine.

Ressources

Vous pouvez également consulter ces outils et démos :

Autres ressources

Conférences et podcasts