تاريخ النشر: 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 في تحسين الأداء والاستدامة.
سير العمل الأساسي مع 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 المبكرة.
- يتم تقديم عمليات دمج المضيفين مع هيئات المعايير المعنيّة:
- سمة
crossoriginstorageوسمة الاستيرادcrossOriginStorageمع معيار HTML الخاص بمجموعة WHATWG cross-origin-storage()مع مجموعة عمل CSS- خيار طلب
crossOriginStorageمع الإعدادات التلقائية للاسترجاع
- سمة
- اختبارات منصة الويب على مستوى المتصفّحات (قيد التطوير)
- تم طلب مواقف المعايير من Mozilla وWebKit.
نرحّب بالملاحظات حول واجهة برمجة التطبيقات والاقتراح. يمكنك الإبلاغ عن المشاكل أو إظهار الدعم أو فتح طلبات سحب في مستودع التخزين المتعدّد المصادر.
الموارد
- اطّلِع على المقالة التوضيحية حول Cross-Origin Storage API ومسودة المواصفات.
- يمكنك متابعة عملية تنفيذ COS في Chrome من خلال وضع علامة نجمة على الخطأ الشامل في "التخزين المتعدّد المصادر" والتبعيات الخاصة به.
- اطّلِع على شرح قائمة التجزئة العلنية.
- الإجابة عن استبيان الأمان والخصوصية في COS
- راجِع Intent to Prototype وإدخال Chrome Platform Status.
بالإضافة إلى ذلك، يمكنك الاطّلاع على هذه الأدوات والعروض التوضيحية:
موادّ إضافية للقراءة في الخلفية
- تعزيز الأمان والخصوصية من خلال تقسيم ذاكرة التخزين المؤقت
- تجربة واجهة برمجة التطبيقات المقترَحة Cross-Origin Storage API في Transformers.js
- تقسيم ذاكرة التخزين المؤقت على الويب: الصورة نفسها، يتم تنزيلها مرّتين بقلم "جوان ليون"
- واجهة برمجة التطبيقات Cross-Origin Storage API: إيقاف التنزيل مرتين بقلم "دينيس موريلو"
- أردتُ أن يشحن المتصفّح jQuery فقط. Cross-Origin Storage came for rescue بقلم أحمد ألفي
محادثات وبودكاست
- ShopTalk Show 732: Thomas Steiner on New Cross-Origin Storage APIs (بودكاست)
- Working Draft 723: Cross-Origin Storage API (بودكاست باللغة الألمانية)
- WeAreDevelopers: ما هي ميزة "التخزين المتعدّد المصادر"؟ (بودكاست)
- مساحة التخزين المتعدّدة المصادر: ذاكرة تخزين مؤقت مشتركة للويب في مؤتمر JSNation US 2026