لمحة عن واجهة برمجة التطبيقات Cross-Origin Storage API

تاريخ النشر: 10 نوفمبر 2026

تعتمد تطبيقات الويب الحديثة غالبًا على مواد عرض كبيرة، مثل أُطر عمل JavaScript ومحركات الألعاب ونماذج الذكاء الاصطناعي. على الرغم من أنّ المواقع الإلكترونية تستخدم مواد عرض متطابقة، على كل موقع إلكتروني تنزيل نسخته الخاصة من كل مادة عرض وتخزينها.

باستخدام واجهة برمجة التطبيقات المقترَحة للتخزين المتعدّد المصادر، يحدّد العميل المحتوى الذي يبحث عنه من خلال تجزئته، ويجلبه من أي عنوان URL لمشاركته على المواقع الإلكترونية المحدّدة (أو جميع المواقع الإلكترونية). وهذا يعني أنّه يمكن مشاركة مورد محدّد ومعروف على مستوى المواقع الإلكترونية، بغض النظر عن عرض مادة العرض. ومع هذا الاقتراح، تأتي مزايا الأمان وتحديات السلامة.

حالات الاستخدام

لقد كتبنا بالتفصيل عن أهمية تخزين النماذج مؤقتًا وتخزين أي مادة عرض مؤقتًا باستخدام Cache Storage API. تتجاوز واجهة برمجة التطبيقات Cross-Origin Storage API ذلك، ويمكن أن تكون مفيدة عندما تحتاج مواقع إلكترونية متعدّدة ذات صلة (أو غير ذلك) إلى الوصول إلى المورد نفسه:

  • نماذج الذكاء الاصطناعي: يتراوح حجم نماذج مثل Gemma أو Llama من غيغابايت تقريبًا إلى عشرات الغيغابايت. ويؤدي تخزين نسخة واحدة واستردادها من خلال COS إلى تجنُّب عمليات التنزيل المكرّرة الضخمة. وهذا هو الدافع الرئيسي وراء الاقتراح.
  • وحدات Wasm: ترسل أُطر العمل، مثل Flutter، ملفات Wasm التي يتم طلبها ملايين المرات يوميًا من آلاف المصادر المختلفة، وتكون دائمًا متطابقة من حيث البايت.
  • مكتبات وأُطر عمل JavaScript الشائعة: يتيح تجميع رمز المورّد بشكل منفصل وبأكمله (مثل مكتبة React الكاملة التي لم يتم تحسينها) لتطبيقات متعددة مشاركة نسخة مخزّنة مؤقتًا واحدة من خلال COS.
  • محرّكات الألعاب: يمكن للألعاب التي تعمل على المتصفّح والمصمَّمة باستخدام محرّكات مثل Godot أو Unity مشاركة وقت تشغيل المحرّك من خلال COS وجلب مواد العرض الخاصة باللعبة فقط عبر الشبكة. وتستفيد من هذه الميزة بشكل كبير بوابات الألعاب التي تستضيف العديد من الألعاب البسيطة من مصادر مختلفة أو من خلال إطارات iframe.
  • خطوط الويب الكبيرة: يتم تنزيل خطوط الرموز وخطوط الإيموجي والخطوط التي تتضمّن تغطية واسعة لترميز Unicode على عدد هائل من الصفحات. وتساعد مشاركتها مرة واحدة من خلال COS في تحسين الأداء والاستدامة.
تشارك لعبتان غير مرتبطتين من Three.js، وهما Descent وQuake، نسخة واحدة من المحرّك من خلال COS، ويتم فحصهما في "أدوات مطوري البرامج".
لعبتان غير مرتبطتين من Three.js، وهما Descent (في علامة التبويب في الخلفية) وQuake (في علامة التبويب في المقدّمة)، تشاركان نسخة واحدة من المحرّك من خلال COS، ويتم فحصهما في "أدوات مطوّري البرامج". هذه لقطة شاشة من إصدار Chromium تجريبي وقد لا تعكس التصميم النهائي.

سير العمل الأساسي مع COS

توفّر واجهة COS API طريقة navigator.crossOriginStorage.getFileHandle() تخزّن من خلالها تطبيقات الويب الملفات وتستردّها عبر حدود المصدر، ويتم تحديدها من خلال تجزئة تشفيريّة. يتضمّن الشرح مثالاً يوضّح الخطوات الأساسية للعمل مع واجهة برمجة التطبيقات.

لنجرّبها الآن

هناك طريقتان لتجربة COS الآن:

  • ثبِّت إضافة متصفّح من سوق Chrome الإلكتروني أو إضافات Firefox أو متجر تطبيقات Safari لتوفير polyfill لواجهة برمجة التطبيقات وجميع عمليات الدمج. يمكنك اختبار مسار واجهة برمجة التطبيقات في أي متصفّح. أو تحميل الإضافة غير المضغوطة من الرمز المصدر.
  • تجربة في Chromium: هناك عملية تنفيذ تجريبية في Chromium. يمكنك تنزيلها لنظام التشغيل macOS على أجهزة Apple silicon أو Linux x86_64 من الرابط goo.gle/cos-chromium، ثم فتح about://flags والبحث عن "Cross-Origin Storage" وضبطها على مفعَّلة وإعادة التشغيل عند طلب ذلك. يتضمّن هذا الإصدار دمجًا مع "أدوات مطوّري البرامج": يمكنك العثور على مساحة التخزين المتعدّدة المصادر في علامة التبويب التطبيق.

الاهتمام بالمنظومة المتكاملة

يُعدّ COS اقتراحًا في مرحلة مبكرة، وهناك عدد من المشاريع التي توفّر دعمًا تجريبيًا، عادةً من خلال علامة موافقة ويتم تقسيمها كتحسين تدريجي:

  • يشارك Emscripten مخرجات Wasm التي تم إنشاؤها.
  • يشارك Flutter وقت تشغيل Skia Wasm.
  • تشارك Transformers.js أوزان النماذج وأوقات تشغيل Wasm التي تعتمد عليها.
  • يشارك WebLLM النماذج وأوقات التشغيل.
  • يشارك wllama نماذج الذكاء الاصطناعي.
  • يحمّل Nuxt.js التبعيات المشتركة من Cross-Origin Storage ويحتفظ بالمكوّن الإضافي Vite COS.
  • تشارك Prompt API Polyfill نماذج الذكاء الاصطناعي في الخلفيات WebLLM وTransformers.js.
  • يحتوي Prebid.js على توزيع شبكة توصيل المحتوى (CDN) المتوافق مع COS لمكتبة عروض الأسعار في رأس الصفحة.

توحيد المقاييس

"التخزين المتعدّد المصادر" هو اقتراح في مرحلة مبكرة من WICG. يمكنك الاطّلاع على مراجعة تصميم TAG في W3C المبكرة.

نرحّب بالملاحظات حول واجهة برمجة التطبيقات والاقتراح. يمكنك الإبلاغ عن المشاكل أو إظهار الدعم أو فتح طلبات سحب في مستودع التخزين المتعدّد المصادر.

الموارد

بالإضافة إلى ذلك، يمكنك الاطّلاع على هذه الأدوات والعروض التوضيحية:

موادّ إضافية للقراءة في الخلفية

محادثات وبودكاست