תאריך פרסום: 10 בנובמבר 2026
אפליקציות אינטרנט מודרניות מסתמכות לעיתים קרובות על נכסים גדולים, כמו JavaScript frameworks, מנועי משחקים ומודלים של AI. למרות שהאתרים משתמשים בנכסים זהים, כל אתר צריך להוריד ולאחסן עותק משלו של כל נכס.
באמצעות Cross-Origin Storage API (או בקיצור COS), הלקוח מציין את התוכן שהוא מחפש לפי ה-hash שלו, ומאחזר אותו מכל כתובת URL כדי לשתף אותו באתרים המיועדים (או בכל האתרים). זה אומר שאפשר לשתף משאב מדויק וידוע בין אתרים, בלי קשר להצגת הנכס. להצעה הזו יש יתרונות מבחינת אבטחה, אבל גם אתגרים מבחינת בטיחות.
תרחישים לדוגמה
כתבנו בהרחבה על החשיבות של שמירת מודלים במטמון ושמירת כל נכס במטמון באמצעות Cache Storage API. Cross-Origin Storage API הוא פתרון מתקדם יותר, שיכול להועיל כשכמה אתרים קשורים (או לא קשורים) צריכים גישה לאותו משאב:
- מודלים של AI: מודלים כמו Gemma או גרסאות של Llama שוקלים בין ג'יגה בייט אחד בערך לעשרות ג'יגה בייט. אחסון ואחזור של עותק אחד דרך COS מונעים הורדות כפולות רבות. זהו המניע העיקרי מאחורי ההצעה.
- מודולים של Wasm: מסגרות כמו Flutter שולחות קובצי Wasm שמתקבלות עבורם מיליוני בקשות ביום באלפי מקורות שונים, והם תמיד זהים מבחינת בייטים.
- ספריות ותבניות framework פופולריות של JavaScript: אם מאגדים קוד של ספק בנפרד ובאופן מלא (כמו ספריית React המלאה, ללא הסרת קוד מיותר), כמה אפליקציות יכולות לשתף עותק אחד שנשמר במטמון דרך COS.
- מנועי משחקים: משחקים בדפדפן שמבוססים על מנועים כמו Godot או Unity יכולים לשתף את זמן הריצה של המנוע דרך COS, ולאחזר רק נכסים ספציפיים למשחק דרך הרשת. הפורטלים שהכי מרוויחים מהתכונה הזו הם פורטלים של משחקים שמארחים הרבה משחקים לקהל הרחב ממקורות שונים או מ-iframe שונים.
- גופני אינטרנט גדולים: גופנים של סמלים, גופנים של סמלי אמוג'י וגופנים עם כיסוי רחב של Unicode יורדים במספר עצום של דפים. שיתוף שלהם פעם אחת דרך COS עוזר גם לביצועים וגם לקיימוּת.
תהליך העבודה הבסיסי עם COS
COS API מציג שיטה של navigator.crossOriginStorage.getFileHandle() שדרכה אפליקציות אינטרנט מאחסנות ושולפות קבצים מעבר לגבולות המקור, שמזוהים באמצעות גיבוב קריפטוגרפי. במסמך ההסבר יש דוגמה שמראה את התהליך הבסיסי של העבודה עם ה-API.
אני רוצה לנסות
יש שתי דרכים להתנסות ב-COS כרגע:
- מתקינים תוסף לדפדפן מחנות האינטרנט של Chrome, מהתוספים של Firefox או מApp Store של Safari כדי להוסיף polyfill לממשק ה-API ולכל השילובים. אתם יכולים לבדוק את תהליך ה-API בכל דפדפן. או לטעון את התוסף כשהוא לא ארוז מקוד המקור שלו.
- ניסוי ב-Chromium: יש הטמעה ניסיונית של Chromium. מורידים את הגרסה ל-macOS במעבדי Apple Silicon או ל-Linux x86_64 מהכתובת goo.gle/cos-chromium, פותחים את
about://flags, מחפשים את Cross-Origin Storage, מגדירים את האפשרות כמופעלת ומפעילים מחדש כשמוצגת בקשה לעשות זאת. הגרסה הזו כוללת שילוב של כלי הפיתוח: אפשר למצוא את האפשרות אחסון ממקורות שונים בכרטיסייה אפליקציה.
עניין במערכת האקולוגית
COS היא הצעה בשלב מוקדם, וכמה פרויקטים כבר כוללים תמיכה ניסיונית, בדרך כלל מאחורי דגל הצטרפות ובשכבות כשיפור הדרגתי (progressive enhancement):
- Emscripten משתף פלט Wasm שנוצר.
- Flutter משתף את סביבת זמן הריצה של Skia Wasm.
- Transformers.js משתף את משקלי המודל ואת סביבות זמן הריצה של Wasm שהם תלויים בהן.
- WebLLM משתף מודלים וסביבות זמן ריצה.
- wllama משתף מודלים של AI.
- Nuxt.js טוען יחסי תלות משותפים מאחסון ממקורות שונים ומתחזק פלאגין Vite COS.
- Prompt API Polyfill משתף מודלים של AI בין הקצוות העורפיים של WebLLM ו-Transformers.js.
- ל-Prebid.js יש הפצת CDN של ספריית הבידינג ב-header שמתאימה ל-COS.
תקנון
אחסון ממקורות שונים הוא הצעה בשלב מוקדם של WICG. אתם יכולים לקרוא את סקירת העיצוב המוקדמת של W3C TAG.
- שילובי המארחים מתועדים בגופי התקנים המתאימים:
- המאפיין
crossoriginstorageומאפיין הייבואcrossOriginStorageעם תקן WHATWG HTML cross-origin-storage()עם קבוצת העבודה של CSS- אפשרות הבקשה
crossOriginStorageעם הסטנדרט של Fetch
- המאפיין
- בדיקות של פלטפורמת אינטרנט בדפדפנים שונים (בתהליך פיתוח)
- ביקשנו מ-Mozilla ומ-WebKit להביע את עמדתם בנושא התקנים.
נשמח לקבל משוב על ה-API ועל ההצעה. אתם יכולים לדווח על בעיות, להביע תמיכה או לפתוח בקשות משיכה במאגר האחסון ממקורות שונים.
משאבים
- קראו את ההסבר על Cross-Origin Storage API ואת טיוטת המפרט.
- כדי לעקוב אחרי ההטמעה של COS ב-Chrome, אתם יכולים לסמן בכוכב את הבאג הראשי של אחסון ממקורות שונים ואת התלויות שלו.
- הסבר על רשימת הגיבוב הציבורית
- ממלאים את שאלון האבטחה והפרטיות של COS.
- כדאי לעיין בIntent to Prototype ובערך Chrome Platform Status.
בנוסף, כדאי לעיין בכלים ובהדגמות הבאים:
חומר רקע נוסף
- שיפור האבטחה והפרטיות באמצעות חלוקת המטמון למחיצות
- התנסות עם ה-API המוצע לאחסון ממקורות שונים ב-Transformers.js
- חלוקת מטמון HTTP למחיצות: אותה תמונה, שהורדה פעמיים, מאת ג'ואן לאון
- Cross-Origin Storage API: Stop Downloading Twice (ממשק API לאחסון ממקורות שונים: הפסקת ההורדה הכפולה) מאת דניס מורלו (Dennis Morello)
- רציתי שהדפדפן פשוט יכלול את jQuery. Cross-Origin Storage came for rescue מאת אחמד אלפי (Ahmad Alfy)
שיחות ופודקאסטים
- ShopTalk Show 732: Thomas Steiner on New Cross-Origin Storage APIs (פודקאסט)
- Working Draft 723: Cross-Origin Storage API (פודקאסט בגרמנית)
- WeAreDevelopers: What is Cross-Origin Storage (פודקאסט)
- אחסון ממקורות שונים: מטמון משותף לאינטרנט בכנס JSNation US 2026