Cross-Origin Storage API - WICG-предложение для шартнга

Одна 8 GB AI-модель, нужная двум сайтам — это 16 GB скачано и 16 GB на диске для одного и того же файла. Cross-Origin Storage API пытается это исправить — и не только для моделей, но и для React, шрифтов и всего остального.

Раньше был реальный трюк: грузить React с публичного CDN, и у посетителя, скорее всего, он уже был в кэше с другого сайта. Браузеры специально это убрали. Партиционирование кэша по top-level сайту закрыло trecking-дыру — по времени загрузки общего ресурса из кэша можно было выяснить, какие ещё сайты посещал человек. Chrome разделил кэш в 2020-м, и совет «просто используй CDN» перестал работать.

Cross-Origin Storage (COS) API — WICG-предложение от инженеров Google и Thinktecture — возвращает общий кэш безопасно, меняя ключ доступа.

Вместо URL файл адресуется по **SHA-256 хэшу**. Запросить можно только файл, чьи точные байты ты уже знаешь:

\\js const handle = await navigator.crossOriginStorage.requestFileHandle({ algorithm: "SHA-256", value: "8f4343..." }); const file = await handle.getFile(); \\

Это и делает cross-origin шейринг безопасным. Но возникает вопрос: разве сам вопрос «есть ли у тебя этот файл?» не становится трекинг-сигналом? Ответ спецификации — многослойный гейтинг, а не промпт разрешения:

→ Нельзя перечислить — только запрос по уже известному хэшу, никакого списка хранимого → Глобальные ("*"\) файлы подтверждают присутствие только если хэш прошёл k-anonymity порог популярности в **Public Hash List** — примерно 100 независимых ориджинов с байт-в-байт идентичным содержимым → Браузер намеренно врёт — GREASE'инг, иногда сообщая, что файла нет, хотя он есть, чтобы «мимо» никогда нельзя было воспринять как реальный сигнал (кроме гигабайтных файлов — там ложная перезагрузка слишком дорого стоит)

Ни один браузер пока не реализует, ни origin trial, ни флага. Но Transformers.js уже даёт экспериментальную поддержку за флагом, WebLLM и wllama тоже экспериментируют — in-browser AI больнее всех чувствует эту боль — при 33 GB на модель Llama.

Писать под это код ещё рано, но понимать стоит уже сейчас — до того, как какая-нибудь библиотека включит это за тебя по умолчанию.

Полный разбор у Dennis Morello 👇 https://morello.dev/blog/cross-origin-storage-api

#webdew #javascript #ai #performance