حصر مشاركة وحدة Wasm على المصدر نفسه

وستقتصر مشاركة وحدة WebAssembly بين بيئات الموقع الإلكتروني نفسها على المصدر نفسه.

ستكون مشاركة وحدة WebAssembly (Wasm) بين بيئات الموقع الإلكتروني نفسه ولكن من مصادر متعددة. نهائيًا للسماح بمجموعات الوكلاء تحديد النطاق للمصادر على المدى الطويل. المطوِّرون الذين يستخدمون وحدات Wasm في مثل هذه طريقة إنشاء مثيل لتلك الوحدات من المصدر نفسه للمتابعة تستخدمها بعد الإصدار 95 من Chrome.

ما هي وحدات 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.

تصوير ماركوس وينكلر في إلغاء البداية