تعديلات على "مساحة التخزين المشتركة" و"عنوان URL المحدّد": وحدات عمل من مصادر مختلفة وطلبات محفوظة

Tara Agyemang
Tara Agyemang

يُجري الإصدار 130 من Chrome تغييرات على Shared Storage API لسماح باستخدام النصوص البرمجية لوحدات العمل التي تعمل من مصادر مختلفة مع createWorklet() وaddModule(). نحن بصدد طرح تعديلات على Select URL API مع "مساحة التخزين المشترَكة" في الإصدار 132 من Chrome مع إتاحة طلبات البحث المحفوظة.

مخطّط بياني يعرض المواقع الإلكترونية المسجّلة التي يمكنها كتابة أي نوع من بيانات المفتاح/القيمة في "مساحة التخزين المشتركة"، ولكن تقتصر قراءة البيانات على واجهات برمجة تطبيقات إخراج معيّنة
تسمح Shared Storage API للمواقع الإلكترونية المسجّلة بكتابة أي نوع من بيانات المفتاح/القيمة في Shared Storage، ولكن تقتصر قراءة البيانات على واجهات برمجة تطبيقات إخراج معيّنة.

وحدات عمل من مصادر متعددة باستخدام Shared Storage API في الإصدار 130 من Chrome

لقد أجرينا تغييرات على Shared Storage API في الإصدار 130 من Chrome لمنحك مزيدًا من المرونة عند العمل مع نصوص برمجية لوحدات العمل من مصادر مختلفة.

التغييرات التي أُجريت

لقد أزلنا القيود المفروضة على المصدر نفسه في addModule() حتى تتمكّن الآن من تحميل نصوص worklet البرمجية من أي مصدر. تتيح النصوص البرمجية لوحدات العمل التي تعمل من مصادر مختلفة حالات استخدام مهمة، مثل استضافة النصوص البرمجية لوحدات العمل على شبكات CDN. عندما يكون نص برمجي للوحدة المهام من مصدر مختلف عن سياق التصفّح الذي يُطلِق الإجراء، يُستخدَم مصدر سياق التفعيل كمصدر قسم البيانات للوصول إلى ملف التخزين المشترَك.

لمطابقة السلوك الجديد لـ addModule() والحدّ من الالتباس المحتمل، تمت إضافة السمة dataOrigin إلى طلب createWorklet() للسماح بقراءة وكتابة بيانات مساحة تخزين مشترَكة في قسم مختلف عن سياق التصفّح الذي يتمّ من خلاله الطلب. يمنحك ذلك مزيدًا من التحكّم الدقيق في مساحة التخزين المشترَكة التي يمكن لكلّ وحدات العمل الوصول إليها، حتى عند استخدام ملفّات برمجية لوحدات العمل من مصادر مختلفة.

التغييرات التي طرأت

اعتبارًا من الإصدار 125 من Chrome، يمكن للنص البرمجي التابع لجهة خارجية من مصدر آخر على الصفحة إنشاء وحدات عمل من مصدر آخر بدون الحاجة إلى إطارات iframe من مصدر آخر من خلال استدعاء createWorklet(url). في السابق، كان createWorklet(url) يستخدِم مصدر عنوان URL (url) للنص البرمجي كمصدر تقسيم البيانات، بغض النظر عن سياق التفعيل.

في الإصدار 130 من Chrome، لاستخدام السلوك الجديد addModule()، يستخدم createWorklet() أيضًا سياق الاستدعاء كمصدر القسم التلقائي للبيانات. لمواصلة استخدام مصدر عنوان URL للنص البرمجي كمصدر تقسيم البيانات، يتمّ طرح سمة جديدة dataOrigin للسماح لك بضبط مصدر تقسيم البيانات بشكل صريح.

يقبل السمة الجديدة dataOrigin القيمة "script-origin" التي تضبط مصدر ملف مشاركة البيانات على أنّه مصدر النص البرمجي، والقيمة "context-origin" التي تضبط مصدر ملف مشاركة البيانات على أنّه مصدر سياق التصفّح الذي يتمّ استخدامه للتشغيل. في أحد الإصدارات القادمة، نخطّط أيضًا لإتاحة مصادر تقسيم البيانات المخصّصة، حيث يمكن لنص برمجي لوحدة عمل الوصول إلى بيانات مساحة التخزين المشتركة من مصدر عشوائي عند الموافقة على ذلك.

عند تحميل نص برمجي من مصدر مختلف مع ضبط مصدر البيانات على "script-origin"، سيتضمّن طلب النص البرمجي المُرسَل من المتصفّح عنوانًا "Sec-Shared-Storage-Data-Origin: <origin>". لتفعيل هذه الميزة، يجب أن يتضمّن النص البرمجي أيضًا عنوان استجابة "Shared-Storage-Cross-Origin-Worklet-Allowed: ?1" للموافقة.

How to use

إذا كنت تستخدِم حاليًا createWorklet() مع مصدر النص البرمجي كمصدر تقسيم بيانات الوحدة، يمكنك ضبط dataOrigin على النحو التالي:

sharedStorage.createWorklet(scriptUrl, {dataOrigin: "script-origin"});

بما أنّ createWorklet() تسمح بإنشاء قسم بيانات من مصادر متعددة و إنشاء وحدات عمل متعددة، ننصحك بالانتقال إلى استخدام createWorklet() بدلاً من addModule().

لقد عدّلنا مستندات المطوّرين لتتضمّن هذه التغييرات وتقدّم المزيد من الإرشادات.

طلبات البحث المحفوظة باستخدام Select URL API في الإصدار 132 من Chrome

نحن بصدد طرح تعديلات على Select URL API مع "مساحة التخزين المشترَكة" في الإصدار 132 من Chrome مع إتاحة طلبات البحث المحفوظة.

التغييرات

تتضمّن Select URL API حاليًا ميزانيتَين لكل عملية تحميل صفحة تقيدان عدد طلبات البيانات التي يتم إجراؤها إلى واجهة برمجة التطبيقات عند كل عملية تحميل صفحة. نحن بصدد إتاحة إمكانية حفظ طلبات البحث وإعادة استخدامها لكل صفحة على حدة. عند استخدام طلب بحث محفوظ، يتم تحصيل الميزانيات لكل عملية تحميل صفحة في المرة الأولى التي يتم فيها تنفيذ طلب البحث المحفوظ، ولكن ليس لتنفيذ عمليات لاحقة من طلب البحث المحفوظ أثناء عملية تحميل الصفحة نفسها.

كيفية تنفيذ طلبات البحث المحفوظة

بدءًا من الإصدار 132 من Chrome، يمكنك استخدام المَعلمة savedQuery في خيارات selectURL() مع اسم طلب البحث:

await sharedStorage.selectURL('experiment', urls, {
  savedQuery: 'control_or_experiment',
  keepAlive: true
});

استخدِم اسم savedQuery نفسه لكلّ طلب بحث موجَّه إلى selectURL() لضمان تحصيل رسوم طلبات البحث للمتابعة من الميزانية نفسها.

لقد عدّلنا المستندات لتعكس هذه التغييرات ولتقديم تفاصيل إضافية حول وضع الميزانية لأجل selectURL().

التفاعل مع الملاحظات ومشاركتها

يُرجى العِلم أنّ اقتراح Shared Storage API قيد المناقشة والتطوير بشكل نشط، وبالتالي يخضع للتغيير.

يسرّنا معرفة رأيك بشأن Shared Storage API.

الاطّلاع على آخر الأخبار

  • القائمة البريدية: يمكنك الاشتراك في قائمتنا البريدية لتلقّي آخر الأخبار والإشعارات المتعلّقة بواجهة برمجة التطبيقات Shared Storage API.

هل أنت بحاجة إلى مساعدة؟