Схема работы Cross-Origin Storage API: два сайта используют один кеш AI-модели, экономя трафик и дисковое пространство

Cross-Origin Storage API в Transformers.js: как избежать двойной загрузки

ИИ-инструменты 1 июля 2026 г.

23 июня 2026 года инженер команды Chrome Томас Штайнер опубликовал в блоге Hugging Face результаты эксперимента с новым Cross-Origin Storage API в библиотеке Transformers.js. Если коротко: сейчас, когда вы открываете два разных сайта, использующих одну и ту же AI-модель, браузер скачивает и кеширует её дважды — по 177 МБ лишнего трафика в простейшем примере. Новый API позволяет сайтам совместно использовать кеш моделей и Wasm-файлов, экономя трафик и дисковое пространство пользователя.

Источник: huggingface.co

Для команды, которая встраивает AI-функции в веб-приложения, это означает возможность ускорить загрузку моделей на повторных визитах и снизить нагрузку на CDN. Но API пока экспериментальный, поддерживается только в Chrome и требует осознанного включения. Прежде чем менять конфигурацию, стоит проверить, какие браузеры использует ваша аудитория и готовы ли вы работать с нестандартизированным механизмом.

Что именно произошло: эксперимент с кешированием между разными сайтами

Transformers.js — это библиотека, которая позволяет запускать AI-модели прямо в браузере через JavaScript. Разработчик создаёт пайплайн, указывает задачу (например, распознавание речи), и библиотека сама скачивает нужные файлы модели и рантайм WebAssembly (Wasm) из Hugging Face Hub.

Проблема в том, что браузер изолирует кеш по происхождению (origin). Если два разных сайта используют одну и ту же модель Xenova/whisper-tiny.en, каждый из них скачивает и хранит её копию. В демонстрации Штайнера это дало 177 МБ дублирующихся данных. Более того, даже разные модели могут зависеть от одного и того же Wasm-файла — например, ort-wasm-simd-threaded.asyncify.wasm размером 4,7 МБ из ONNX Runtime. Этот файл тоже скачивается повторно для каждого сайта.

Cross-Origin Storage API, предложенный в рамках WICG (Web Incubator Community Group), позволяет сайтам с разными доменами читать и записывать данные в общее хранилище. В Transformers.js это реализовано через флаг experimental_useCrossOriginStorage. Когда он включён, библиотека пытается найти уже загруженные ресурсы в общем кеше, прежде чем скачивать их заново.

Как это меняет стоимость и скорость загрузки AI-функций

Для бизнеса, который встраивает AI-модели в браузерные приложения, эффект складывается из трёх составляющих.

Трафик. Каждый новый пользователь, открывающий сайт с AI-функцией, скачивает модель. Если модель популярна и используется на нескольких сайтах, повторные загрузки умножаются. В примере с Whisper Tiny — 177 МБ на каждую пару сайтов. Для пользователей с медленным или тарифицированным интернетом это прямая потеря.

Время загрузки. При повторном визите на тот же сайт модель берётся из кеша Cache API и работает почти мгновенно. Но при переходе на другой сайт с той же моделью загрузка начинается с нуля. Cross-Origin Storage API позволяет пропустить этот этап.

Дисковое пространство. Браузер хранит копии моделей для каждого сайта отдельно. Если пользователь регулярно заходит на три сайта с одной моделью, на диске лежит три копии. При размерах моделей в сотни мегабайт это заметно.

Что нужно проверить до включения экспериментального режима

Прежде чем добавлять experimental_useCrossOriginStorage: true в конфигурацию Transformers.js, проверьте четыре условия.

Поддержка браузера. API существует только в Chrome (и, возможно, в браузерах на его основе). Safari, Firefox и другие движки пока не реализовали предложение. Если ваша аудитория использует разные браузеры, включение флага не даст эффекта для части пользователей — библиотека просто продолжит работать со стандартным кешем.

Статус стандарта. Cross-Origin Storage API находится на стадии предложения в WICG. Это не финальный стандарт. API может измениться, и код, написанный сегодня, потребует обновления. В документации Transformers.js флаг явно помечен как experimental.

Безопасность. Совместное хранилище между разными источниками создаёт поверхность для атак, если данные не проверяются. В текущей реализации Transformers.js кешируются только файлы моделей и Wasm, но механизм проверки целостности и контроля доступа ещё обсуждается.

Совместимость с вашим CDN. Ресурсы моделей в Hugging Face Hub проходят через редирект на CDN-адрес. API должен корректно обрабатывать такие цепочки. В демонстрации Штайнера это работает, но на других CDN или при кастомных настройках кеширования возможны сбои.

Что может пойти не так: риски и неопределённости

Экспериментальный статус API означает, что он может быть изменён или отозван. Если вы встроите его в production-приложение, а затем API изменится, вам придётся обновлять код или откатывать изменения.

Поддержка только Chrome создаёт неравные условия для пользователей. Если ваше приложение ориентировано на российскую аудиторию, где доля Chrome может быть высокой, это менее критично. Но для международных проектов разрыв в опыте между браузерами станет заметным.

Совместное кеширование между сайтами означает, что данные, загруженные одним сайтом, становятся доступны другому. Это может нарушить ожидания пользователей о приватности, хотя в случае с моделями речь идёт об общедоступных файлах, а не о пользовательских данных. Тем не менее, юридическая сторона вопроса пока не проработана.

Наконец, сам эксперимент проведён инженером Google Chrome. Это не означает, что API будет принят другими браузерами или что он безопасен для всех сценариев. Результаты стоит проверять самостоятельно на своей аудитории и инфраструктуре.

Практический чек-лист для команды на эту неделю

Если вы рассматриваете внедрение Cross-Origin Storage API в Transformers.js, выполните пять проверок, прежде чем менять код.

  • [ ] Определите долю Chrome в вашей аудитории. Если меньше 70%, эффект от API будет ограничен. Используйте данные Яндекс.Метрики или Google Analytics.
  • [ ] Проверьте, какие модели использует ваше приложение. Если модели уникальны для вашего сайта и не используются на других ресурсах, выгода от кросс-доменного кеша будет нулевой.
  • [ ] Замерьте текущий объём кеша моделей. Откройте Chrome DevTools → Application → Storage и посмотрите, сколько места занимают файлы Transformers.js. Это даст базу для сравнения.
  • [ ] Включите флаг в тестовом окружении. Установите experimental_useCrossOriginStorage: true в конфигурации и проверьте, что модели загружаются корректно на нескольких тестовых доменах.
  • [ ] Подготовьте план отката. Если API изменится или выявит проблемы, вы должны иметь возможность быстро вернуть experimental_useCrossOriginStorage: false без потери функциональности.

Какое решение принять сейчас

Cross-Origin Storage API в Transformers.js — это полезный, но сырой инструмент. Он решает реальную проблему дублирования кеша, но только для пользователей Chrome и только в рамках экспериментального стандарта.

Если ваше приложение ориентировано на Chrome и использует популярные модели с Hugging Face (например, Whisper Tiny или DistilBERT), имеет смысл включить флаг в тестовом режиме и замерить экономию трафика. Если аудитория использует разные браузеры или модели уникальны, внедрение не даст заметного эффекта.

В любом случае, не стоит полагаться на этот API как на единственный механизм кеширования. Стандартный Cache API Transformers.js работает стабильно и поддерживается всеми браузерами. Cross-Origin Storage — это дополнительная оптимизация, а не замена.

Источники

Что почитать дальше

Теги