وستقتصر مشاركة وحدة WebAssembly بين بيئات الموقع الإلكتروني نفسه على المصدر نفسه فقط.
سيتم نهائيًا إيقاف مشاركة وحدة WebAssembly (Wasm) بين بيئات الموقع الإلكتروني نفسه ولكن من مصادر متعددة للسماح بوصول مجموعات الوكلاء إلى مجموعات المصادر على المدى الطويل. على المطوّرين الذين يستخدمون وحدات Wasm بهذه الطريقة التأكّد من إنشاء مثيل لتلك الوحدات من المصدر نفسه لمواصلة استخدامها بعد Chrome 95.
ما هي وحدات Wasm وكيف تعمل؟
يتم تنظيم برامج WebAssembly في وحدات، وهي وحدة النشر والتحميل والتجميع.
في نموذج الرمز التالي، تتم مشاركة وحدة Wasm التي تم استيرادها من https://iframe.site.example
مع https://main.site.example
من خلال postMessage()
. يُرجى العلم أنّ هذه النطاقات تابعة للموقع الإلكتروني نفسه ولكنّها من مصادر متعددة.
وحدة Wasm على https://iframe.site.example
:
(async () => {
const instance = await WebAssembly.instantiateStreaming(fetch('./add.wasm'), {});
iframe.contentWindow.postMessage(instance.module, `https://main.site.example`);
})();
بدايةً من الإصدار 95 من Chrome، يجب أن يكون المُرسِل والمُستلِم من المصدر نفسه. في
الحالة أعلاه، يجب أن يكون https://iframe.site.example
https://main.site.example
أو العكس.
سبب الحاجة إلى ذلك
يعالج Chrome بشكل داخلي المستندات وعلامات التبويب والإطارات المختلفة في مجموعات الوكلاء المستندة إلى الموقع الإلكتروني. وهذا يعني أنه يتم التعامل مع مستندات الموقع نفسه ضمن العملية ذاتها (تختلف طريقة عمل هذه المستندات حسب كل متصفح). ومؤخرًا، بدأ Chrome في التعامل معها في وحدات أكثر دقة، وهي "الأصول". ونحن نسميها مجموعات الوكلاء المستندة إلى المصدر. ومع ذلك، ولأنّ ذلك يتطلب موارد كثيرة، لم يتم تطبيق مجموعات الوكلاء المستندة إلى المصدر إلا على مواقع إلكترونية محدودة وإرشاديًا.
وتتمثل الخطة في جعل كل مجموعات الوكلاء مستندة إلى المصدر تلقائيًا. ولتحقيق ذلك، نحتاج إلى الحدّ من الإمكانات التي تتطلب مجموعات المصادر المستندة إلى الموقع الإلكتروني:
- (في Chrome فقط) لم يعُد بإمكانك إرسال عناصر
SharedArrayBuffer
أوWebAssembly.Memory
إلى صفحات أخرى من مصادر متعددة للموقع الإلكتروني نفسه. هذا الإعداد مفعَّل حاليًا في الإصدار 92 من متصفّح Chrome. - لن يعود بإمكانك إرسال عناصر
WebAssembly.Module
إلى صفحات أخرى من مصادر متعددة على الموقع الإلكتروني نفسه من خلالpostMessage()
. يتم توضيح هذا التغيير بمزيد من التفاصيل أدناه.. - لم يعُد بإمكانك ضبط
document.domain
. هذه ميزة قديمة تسمح عادةً للصفحات المتعددة المصادر من موقع إلكتروني واحد بالوصول المتزامن إلى نموذج العناصر في المستند (DOM) لبعضها البعض، ولكن في مجموعات الوكلاء المستندة إلى المصدر، يتم إيقاف هذه الميزة.
من خلال معالجة جميع التغييرات أعلاه، سينتقل Chrome لاستخدام مجموعات الوكلاء المستنِدة إلى المصدر تلقائيًا.
لمزيد من المعلومات عن مجموعات الوكلاء المستندة إلى المصدر، يُرجى الاطّلاع على المقالة طلب عزل الأداء باستخدام عنوان Origin-Agent-Cluster.
الخطوات التالية والموارد
ولكي يعمل Chrome مع مجموعات الوكلاء المستندة إلى المصدر تلقائيًا،
سنجعل document.domain
للقراءة فقط. يسعى فريق Chrome إلى إجراء هذا التغيير
في وقت ما في عام 2022.
تصوير ماركوس وينكلر على Un تحقق