Представляем Cross-Origin Storage API

Дата публикации: 10 ноября 2026 г.

Современные веб-приложения часто зависят от больших объектов, таких как фреймворки JavaScript, игровые движки и модели искусственного интеллекта. Несмотря на то, что сайты используют идентичные объекты, каждый сайт должен скачать и сохранить свою копию каждого из них.

Предлагаемый Cross-Origin Storage API (COS) позволяет клиенту указать хеш нужного контента и получить этот контент по любому URL, чтобы затем передать его на определенные сайты (или на все сайты). Это означает, что точный, известный ресурс может использоваться на разных сайтах независимо от показа объекта. Это предложение имеет как преимущества в плане безопасности, так и недостатки.

Примеры использования

Мы подробно писали о важности моделей кеширования и кеширования любых ресурсов с помощью Cache Storage API. Cross-Origin Storage API идет ещё дальше и может быть полезен, когда нескольким связанным (или нет) сайтам нужен доступ к одному и тому же ресурсу:

  • ИИ-модели. Модели, такие как Gemma или варианты Llama, весят от одного до десятков гигабайт. Хранение и извлечение одной копии через COS позволяет избежать массовых повторных скачиваний. Это основная причина, по которой мы предлагаем такое решение.
  • Модули Wasm. Фреймворки, такие как Flutter, поставляют файлы Wasm, которые запрашиваются миллионы раз в день из тысяч различных источников и всегда идентичны по байтам.
  • Популярные библиотеки и фреймворки JavaScript. Если вы упакуете код поставщика отдельно и полностью (например, всю библиотеку React без оптимизации), то несколько приложений смогут использовать одну кешированную копию через COS.
  • Игровые движки. Браузерные игры, созданные на таких движках, как Godot или Unity, могут использовать среду выполнения движка через COS и получать по сети только объекты, относящиеся к игре. Наибольшую пользу от этого получат игровые порталы, на которых размещено много казуальных игр из разных источников или в разных фреймах iframe.
  • Большие веб-шрифты. Шрифты значков, эмодзи и шрифты с широким охватом Unicode скачиваются на огромном количестве страниц. Если вы будете передавать их один раз через COS, это поможет повысить эффективность и устойчивость.
Две не связанные между собой игры Three.js, Descent и Quake, используют одну копию движка через COS, что видно в Инструментах разработчика.
Две не связанные между собой игры Three.js, Descent (в фоновой вкладке) и Quake (в активной вкладке), используют одну копию движка через COS, которая проверяется в инструментах разработчика. Этот скриншот сделан в экспериментальной сборке Chromium и может не отражать окончательный дизайн.

Базовый рабочий процесс с использованием COS

В COS API есть метод navigator.crossOriginStorage.getFileHandle(), с помощью которого веб-приложения могут хранить и получать файлы, используя криптографический хеш. В пояснении есть пример, который показывает основной процесс работы с API.

Попробовать

Сейчас есть два способа протестировать COS:

Интерес к экосистеме

COS – это предложение на ранней стадии, и ряд проектов уже поставляется с экспериментальной поддержкой, обычно за флагом согласия и в виде прогрессивного улучшения:

  • Emscripten предоставляет сгенерированные выходные данные Wasm.
  • Flutter использует среду выполнения Skia Wasm.
  • Transformers.js использует общие веса моделей и среды выполнения Wasm, от которых они зависят.
  • WebLLM предоставляет модели и среды выполнения.
  • wllama предоставляет доступ к ИИ-моделям.
  • Nuxt.js загружает общие зависимости из хранилища с перекрестным доступом и поддерживает плагин Vite COS.
  • Полифил Prompt API использует ИИ-модели в своих бэкендах WebLLM и Transformers.js.
  • Prebid.js имеет CDN-дистрибутив библиотеки назначения ставок в заголовке, совместимый с COS.

Стандартизация

Cross-Origin Storage – это предложение WICG, находящееся на ранней стадии разработки. Вы можете ознакомиться с ранней версией W3C TAG Design Review.

Мы будем рады вашим отзывам об API и предложении. Вы можете сообщать о проблемах, выражать поддержку или открывать pull-запросы в репозитории Cross-Origin Storage.

Ресурсы

Также рекомендуем ознакомиться со следующими инструментами и демонстрациями:

Дополнительная информация

Беседы и подкасты