Çapraz Kaynak Storage API'si ile tanışın

Yayınlanma tarihi: 10 Kasım 2026

Modern web uygulamaları genellikle JavaScript çerçeveleri, oyun motorları ve yapay zeka modelleri gibi büyük öğelere bağlıdır. Siteler aynı öğeleri kullanıyor olsa da her sitenin her bir öğenin kendi kopyasını indirip depolaması gerekir.

Önerilen Cross-Origin Storage API (kısaca COS) ile istemci, aradığı içeriği karma değeriyle belirtir ve belirlenen sitelerde (veya tüm sitelerde) paylaşmak için herhangi bir URL'den getirir. Bu, tam ve bilinen bir kaynağın, öğenin yayınlanmasından bağımsız olarak siteler arasında paylaşılabileceği anlamına gelir. Bu teklif, güvenlik avantajları ve güvenlik zorlukları getiriyor.

Kullanım alanları

Modelleri önbelleğe almanın ve Cache Storage API ile öğeleri önbelleğe almanın önemi hakkında ayrıntılı bilgi verdik. Cross-Origin Storage API bir adım daha ileri gider ve birden fazla ilişkili (veya başka) web sitesinin aynı kaynağa erişmesi gerektiğinde faydalı olabilir:

  • Yapay zeka modelleri: Gemma veya Llama varyantları gibi modellerin boyutu yaklaşık bir gigabayt ile onlarca gigabayt arasında değişir. COS aracılığıyla tek bir kopyanın depolanması ve alınması, büyük boyutlu yinelenen indirmeleri önler. Bu, teklifin arkasındaki temel motivasyondur.
  • Wasm modülleri: Flutter gibi çerçeveler, binlerce farklı kaynakta günde milyonlarca kez istenen ve her zaman bayt olarak aynı olan Wasm dosyaları gönderir.
  • Popüler JavaScript kitaplıkları ve çerçeveleri: Tedarikçi kodu ayrı ve bütünüyle (ör. eksiksiz, ağaç sallama uygulanmamış React kitaplığı) paketlendiğinde birden fazla uygulama, COS aracılığıyla önbelleğe alınmış tek bir kopyayı paylaşabilir.
  • Oyun motorları: Godot veya Unity gibi motorlar üzerine inşa edilen tarayıcı oyunları, motor çalışma zamanını COS aracılığıyla paylaşabilir ve ağ üzerinden yalnızca oyuna özel öğeleri getirebilir. Farklı kaynaklarda veya iFrame'lerde birçok basit oyun barındıran oyun portalları bu özellikten en çok yararlananlardır.
  • Büyük web yazı tipleri: Simge yazı tipleri, emoji yazı tipleri ve geniş Unicode kapsamına sahip yazı tipleri çok sayıda sayfaya indirilir. Bunları COS aracılığıyla bir kez paylaşmak hem performansa hem de sürdürülebilirliğe yardımcı olur.
Birbiriyle ilişkili olmayan iki Three.js oyunu (Descent ve Quake), Geliştirici Araçları'nda incelenen COS aracılığıyla motorun bir kopyasını paylaşır.
Birbiriyle ilişkili olmayan iki Three.js oyunu olan Descent (arka plan sekmesinde) ve Quake (ön plan sekmesinde), COS aracılığıyla motorun bir kopyasını paylaşır. Bu kopya, Geliştirici Araçları'nda incelenir. Bu ekran görüntüsü deneysel bir Chromium derlemesinden alınmıştır ve nihai tasarımı yansıtmayabilir.

COS ile çalışmanın temel akışı

COS API, web uygulamalarının kriptografik karma ile tanımlanan kaynak sınırları genelinde dosyaları depolayıp almasını sağlayan bir navigator.crossOriginStorage.getFileHandle() yöntemi sunar. Açıklayıcıda, API ile çalışmanın temel akışını gösteren bir örnek yer alır.

Hemen deneyin

Şu anda COS ile deneme yapmanın iki yolu vardır:

  • API yüzeyini ve tüm entegrasyonları polyfill etmek için Chrome Web Mağazası, Firefox Eklentileri veya Safari Uygulama Mağazası'dan bir tarayıcı uzantısı yükleyin. API akışını herhangi bir tarayıcıda test edebilirsiniz. Alternatif olarak, uzantıyı kaynak kodundan paketi açılmış olarak yükleyebilirsiniz.
  • Chromium'da deneme: Deneysel bir Chromium uygulaması vardır. Apple Silicon'da macOS veya Linux x86_64 için goo.gle/cos-chromium adresinden indirin, ardından about://flags adresini açın, "Cross-Origin Storage"ı arayın, Etkin olarak ayarlayın ve istendiğinde yeniden başlatın. Bu derleme, Geliştirici Araçları entegrasyonu içerir: Uygulama sekmesinde Çapraz kaynak depolama alanı'nı bulun.

Ekosistem ilgisi

COS, erken aşamadaki bir tekliftir ve bazı projeler, genellikle etkinleştirme işaretinin arkasında ve progresif geliştirme olarak katmanlı şekilde deneysel destek sunmaktadır:

  • Emscripten, oluşturulan Wasm çıkışını paylaşır.
  • Flutter, Skia Wasm çalışma zamanını paylaşır.
  • Transformers.js, model ağırlıklarını ve bağlı oldukları Wasm çalışma zamanlarını paylaşır.
  • WebLLM, modelleri ve çalışma zamanlarını paylaşır.
  • wllama, yapay zeka modellerini paylaşır.
  • Nuxt.js, paylaşılan bağımlılıkları çapraz kaynak depolama alanından yükler ve bir Vite COS eklentisi bulundurur.
  • Prompt API Polyfill, yapay zeka modellerini WebLLM ve Transformers.js arka uçlarında paylaşır.
  • Prebid.js, başlıktan teklif alma (header bidding) kitaplığının COS'a hazır bir CDN dağıtımına sahiptir.

Standartlaştırma

Çapraz Kaynak Depolama, erken aşamadaki bir WICG teklifidir. Erken W3C TAG Tasarım İncelemesi'ni okuyabilirsiniz.

API ve teklifle ilgili geri bildirimlerinizi bekliyoruz. Çapraz Kaynak Depolama Alanı deposunda sorunları bildirebilir, destek gösterebilir veya pull istekleri açabilirsiniz.

Kaynaklar

Ayrıca şu araçlara ve demolara göz atın:

Ek okuma materyali

Söyleşiler ve podcast'ler