השיתוף של מודול 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