Дата публикации: 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, это поможет повысить эффективность и устойчивость.
Базовый рабочий процесс с использованием COS
В COS API есть метод navigator.crossOriginStorage.getFileHandle(), с помощью которого веб-приложения могут хранить и получать файлы, используя криптографический хеш. В пояснении есть пример, который показывает основной процесс работы с API.
Попробовать
Сейчас есть два способа протестировать COS:
- Установите расширение для браузера из интернет-магазина Chrome, дополнений Firefox или магазина приложений Safari, чтобы заполнить поверхность API и все интеграции. Протестировать работу API можно в любом браузере. или загрузить расширение в распакованном виде из исходного кода.
- Эксперимент в Chromium. Экспериментальная реализация в Chromium. Скачайте версию для macOS на Apple silicon или Linux x86_64 на странице goo.gle/cos-chromium, затем откройте
about://flags, найдите Cross-Origin Storage, выберите Enabled (Включено) и перезапустите браузер, когда появится запрос. В этой сборке есть интеграция с Инструментами разработчика: найдите Хранилище для разных источников на вкладке Приложение.
Интерес к экосистеме
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.
- Интеграции хостов регистрируются в соответствующих органах по стандартизации:
- Атрибут
crossoriginstorageи атрибут импортаcrossOriginStorageв соответствии со стандартом WHATWG HTML cross-origin-storage()с рабочей группой CSS- Параметр запроса
crossOriginStorageв стандарте Fetch
- Атрибут
- Тесты веб-платформы для разных браузеров (в разработке).
- Мы запросили позиции по стандартам у Mozilla и WebKit.
Мы будем рады вашим отзывам об API и предложении. Вы можете сообщать о проблемах, выражать поддержку или открывать pull-запросы в репозитории Cross-Origin Storage.
Ресурсы
- Ознакомьтесь с описанием Cross-Origin Storage API и черновиком спецификации.
- Чтобы следить за реализацией COS в Chrome, добавьте в избранное основную ошибку Cross-Origin Storage и ее зависимости.
- Ознакомьтесь с описанием общедоступного списка хешей.
- Заполните анкету о безопасности и конфиденциальности.
- Ознакомьтесь с документами Intent to Prototype и Chrome Platform Status.
Также рекомендуем ознакомиться со следующими инструментами и демонстрациями:
- Awesome Cross-Origin Storage
- Исходный код и инструкции по использованию расширения Cross-Origin Storage
Дополнительная информация
- Как повысить безопасность и конфиденциальность, разделив кеш
- Эксперименты с предлагаемым Cross-Origin Storage API в Transformers.js
- Разделение HTTP-кеша: одно и то же изображение скачивается дважды (автор – Жоан Леон)
- Cross-Origin Storage API: Stop Downloading Twice (Cross-Origin Storage API: как избежать повторного скачивания), автор – Деннис Морелло (Dennis Morello)
- Я хотел, чтобы браузер просто поставлял jQuery. Cross-Origin Storage came for rescue (Ахмад Альфи)
Беседы и подкасты
- ShopTalk Show 732: Томас Штайнер о новых API для междоменного хранения данных (подкаст)
- Working Draft 723: Cross-Origin Storage API (подкаст на немецком языке)
- WeAreDevelopers: Что такое хранилище из разных источников (подкаст)
- Cross-Origin Storage: a shared cache for the web (Хранилище из разных источников: общий кеш для интернета) на JSNation US 2026