Opublikowano: 10 listopada 2026 r.
Nowoczesne aplikacje internetowe często korzystają z dużych zasobów, takich jak platformy JavaScript, silniki gier i modele AI. Mimo że witryny używają identycznych zasobów, każda z nich musi pobrać i zapisać własną kopię każdego z nich.
W przypadku proponowanego interfejsu Cross-Origin Storage API (w skrócie COS) klient określa treści, których szuka, za pomocą ich hasha i pobiera je z dowolnego adresu URL, aby udostępnić je w wyznaczonych witrynach (lub we wszystkich witrynach). Oznacza to, że dokładny, znany zasób może być udostępniany w różnych witrynach niezależnie od wyświetlania komponentu. Ta propozycja wiąże się z korzyściami w zakresie bezpieczeństwa, ale też z wyzwaniami.
Przypadki użycia
Wiele już napisaliśmy o znaczeniu buforowania modeli i buforowania dowolnych zasobów za pomocą interfejsu Cache Storage API. Interfejs Cross-Origin Storage API idzie o krok dalej i może być przydatny, gdy kilka powiązanych (lub niepowiązanych) witryn potrzebuje dostępu do tego samego zasobu:
- Modele AI: modele takie jak Gemma czy Llama ważą od około gigabajta do kilkudziesięciu gigabajtów. Przechowywanie i pobieranie jednej kopii za pomocą COS pozwala uniknąć pobierania duplikatów. To główny powód, dla którego powstała ta propozycja.
- Moduły Wasm: platformy takie jak Flutter dostarczają pliki Wasm, które są żądane miliony razy dziennie z tysięcy różnych źródeł i zawsze są identyczne pod względem bajtów.
- Popularne biblioteki i platformy JavaScript: oddzielne grupowanie kodu dostawcy w całości (np. kompletnej biblioteki React bez optymalizacji tree shaking) umożliwia wielu aplikacjom udostępnianie jednej kopii z pamięci podręcznej za pomocą COS.
- Silniki gier: gry przeglądarkowe oparte na silnikach takich jak Godot czy Unity mogą udostępniać środowisko wykonawcze silnika za pomocą COS i pobierać przez sieć tylko zasoby specyficzne dla gry. Najwięcej korzyści odniosą portale z grami, które zawierają wiele gier rekreacyjnych z różnych źródeł lub elementów iframe.
- Duże czcionki internetowe: czcionki ikon, czcionki emotikonów i czcionki z szerokim zakresem znaków Unicode są pobierane na ogromnej liczbie stron. Udostępnienie ich raz za pomocą COS pomaga zarówno w zwiększeniu wydajności, jak i w zapewnieniu zrównoważonego rozwoju.
Podstawowy proces pracy z COS
Interfejs COS API wprowadza metodę navigator.crossOriginStorage.getFileHandle(), za pomocą której aplikacje internetowe przechowują i pobierają pliki poza granicami pochodzenia, identyfikowane przez hasz kryptograficzny. W wyjaśnieniu znajdziesz przykład pokazujący podstawowy proces korzystania z interfejsu API.
Wypróbuj już dzisiaj
Obecnie możesz eksperymentować z COS na 2 sposoby:
- Zainstaluj rozszerzenie do przeglądarki z Chrome Web Store, dodatków do Firefoksa lub Safari App Store, aby zapewnić zgodność interfejsu API i wszystkich integracji. Przepływ interfejsu API możesz przetestować w dowolnej przeglądarce. Możesz też załadować rozpakowane rozszerzenie z jego kodu źródłowego.
- Eksperyment w Chromium: dostępna jest eksperymentalna implementacja Chromium. Pobierz go na macOS na Apple Silicon lub Linux x86_64 ze strony goo.gle/cos-chromium, a następnie otwórz
about://flags, wyszukaj „Cross-Origin Storage”, ustaw opcję Włączone i uruchom ponownie, gdy pojawi się prośba. Ta kompilacja zawiera integrację z Narzędziami deweloperskimi: znajdź Współdzielenie pamięci masowej na karcie Aplikacja.
Zainteresowanie ekosystemem
COS to propozycja na wczesnym etapie, a wiele projektów już oferuje eksperymentalną obsługę, zwykle za flagą akceptacji i jako progresywne ulepszanie:
- Emscripten udostępnia wygenerowane dane wyjściowe Wasm.
- Flutter udostępnia środowisko wykonawcze Skia Wasm.
- Transformers.js udostępnia wagi modelu i środowiska wykonawcze Wasm, od których zależą.
- WebLLM udostępnia modele i środowiska wykonawcze.
- wllama udostępnia modele AI.
- Nuxt.js wczytuje współdzielone zależności z pamięci masowej w ramach współdzielenia i utrzymuje wtyczkę Vite COS.
- Prompt API Polyfill udostępnia modele AI w backendach WebLLM i Transformers.js.
- Prebid.js ma dystrybucję CDN biblioteki określania stawek przez kod w nagłówku, która jest zgodna z COS.
Standaryzacja
Współdzielenie pamięci masowej między źródłami to propozycja WICG na wczesnym etapie. Możesz zapoznać się z wczesną wersją przeglądu projektu W3C TAG.
- Integracje hostów są rejestrowane w odpowiednich organizacjach normalizacyjnych:
- Atrybut
crossoriginstoragei atrybut importucrossOriginStoragezgodne ze standardem WHATWG HTML cross-origin-storage()z grupą roboczą CSS- Opcja żądania
crossOriginStoragew Fetch Standard
- Atrybut
- Web Platform Tests na różnych przeglądarkach (w trakcie opracowywania)
- Poprosiliśmy o stanowisko w sprawie standardów organizacje Mozilla i WebKit.
Czekamy na opinie na temat interfejsu API i propozycji. Możesz zgłaszać problemy, wyrażać poparcie lub otwierać żądania pull w repozytorium pamięci masowej współdzielonej.
Zasoby
- Przeczytaj wyjaśnienie dotyczące interfejsu Cross-Origin Storage API i projekt specyfikacji.
- Aby śledzić implementację COS w Chrome, oznacz gwiazdką błąd zbiorczy dotyczący pamięci masowej współdzielonej i jego zależności.
- Zapoznaj się z wyjaśnieniem dotyczącym publicznej listy skrótów.
- Wypełnij kwestionariusz dotyczący bezpieczeństwa i prywatności w COS.
- Zapoznaj się z dokumentem Intent to Prototype i wpisem Stan platformy Chrome.
Zapoznaj się też z tymi narzędziami i prezentacjami:
- Awesome Cross-Origin Storage
- Źródło rozszerzenia do współdzielenia pamięci masowej i instrukcje korzystania z niego
Dodatkowe materiały
- Zwiększanie bezpieczeństwa i prywatności dzięki partycjonowaniu pamięci podręcznej
- Eksperymentowanie z proponowanym interfejsem Cross-Origin Storage API w Transformers.js
- Partycjonowanie pamięci podręcznej HTTP: ten sam obraz pobrany dwukrotnie, autor: Joan León
- Cross-Origin Storage API: Stop Downloading Twice (autor: Dennis Morello)
- Chciałem, żeby przeglądarka po prostu dostarczała jQuery. Cross-Origin Storage came for rescue, autor: Ahmad Alfy
Rozmowy i podcasty
- ShopTalk Show 732: Thomas Steiner on New Cross-Origin Storage APIs (podcast)
- Working Draft 723: Cross-Origin Storage API (podcast w języku niemieckim)
- WeAreDevelopers: What is Cross-Origin Storage (podcast)
- Cross-Origin Storage: a shared cache for the web na konferencji JSNation US 2026