Cross-Origin Storage API: перестаньте скачивать файлы дважды

Cross-Origin Storage API может позволить браузерам совместно использовать ИИ-модель размером 33 ГБ между двумя сайтами, сократив объем загружаемых данных с 66 ГБ до 33 ГБ.

Раньше браузеры позволяли любому сайту повторно использовать файл, который уже был загружен другим сайтом. Если загрузить один и тот же React-бандл из CDN на двух разных страницах, браузер во второй раз выдаст копию из кэша. Серия изменений, направленных на защиту конфиденциальности, нарушила это удобство: теперь браузеры разделяют кэши по сайтам, поэтому даже идентичные URL-адреса хранятся отдельно для каждого источника (origin). Результатом становится дублирование трафика для каждого крупного ресурса, который появляется более чем на одном сайте.

Почему проблема дублирования загрузок актуальна именно сейчас

Избыточность заметна на небольших файлах — веб-шрифтах или нескольких мегабайтах JavaScript — но она становится катастрофической, когда ресурсом выступает многогигабайтная ИИ-модель или модуль WebAssembly.

Как работает Cross-Origin Storage (COS) API

Предложение заменяет поиск по URL-адресу поиском по содержимому. Сайт предоставляет SHA-256 хеш файла, который ему нужен. Браузер проверяет наличие этого точного хеша в своем локальном хранилище, независимо от того, какой источник загрузил его изначально. Если файл найден, браузер передает его; если нет — загружает файл из сети и сохраняет его под этим хешем для будущего межсайтового использования.

  • Идентификация по хешу. Хеш уникально представляет байты файла, а не его местоположение.
  • Межсайтовый доступ. Любой сайт, знающий хеш, может запросить файл, даже если тот был получен из другого источника.
  • Совместное использование локального кэша. Одна и та же физическая копия удовлетворяет несколько запросов.

API намеренно имеет узкую специализацию: он не заменяет существующие Cache API или IndexedDB. Те остаются инструментами для хранения общего назначения; COS — это узкоспециализированный инструмент для работы с большими идентичными блобами (blobs).

Меры защиты конфиденциальности, заложенные в архитектуру

Разрешение сайтам проверять кэш пользователя может вернуть векторы отслеживания, которые должны были устранить разделенные кэши. COS блокирует этот риск с помощью трех правил:

  1. Никакого перечисления. Скрипты не могут спросить: «какие хеши у вас есть?» — хранилище непрозрачно.
  2. Требование известного хеша. Сайт может запросить файл только в том случае, если он уже знает точный хеш. Случайный перебор невозможен без предварительных знаний.
  3. Порог популярности для глобального доступа. Файл должен быть достаточно распространенным — то есть «анонимным» — прежде чем другой источник сможет его получить. Редкие файлы остаются изолированными в источнике, который загрузил их первым.

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

За чем следить дальше

Cross-Origin Storage API предлагает простое решение проблемы, масштаб которой растет вместе с появлением массивных ресурсов внутри браузера. Сможет ли веб-сообщество сбалансировать эффективность использования полосы пропускания и гарантии конфиденциальности, ставшие причиной разделения кэшей, — решит, выйдет ли эта идея за рамки черновика. Если это произойдет, будущие браузеры позволят вам скачать 30-гигабайтную ИИ-модель всего один раз и использовать её повсюду, экономя время, трафик и энергию.