היכולת לשתף מודול 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.
תמונה של Markus Winkler ב-Unsplash