تاریخ انتشار: ۱۰ نوامبر ۲۰۲۶
برنامههای وب مدرن اغلب به داراییهای بزرگ، مانند چارچوبهای جاوا اسکریپت، موتورهای بازی، و مدلهای هوش مصنوعی وابسته هستند. باوجود اینکه سایتها از داراییهای یکسانی استفاده میکنند، هر سایت باید نسخه خودش را از هر دارایی بارگیری و ذخیره کند.
با Cross-Origin Storage API پیشنهادی (بهاختصار COS)، مشتری محتوای موردنظرش را با درهمساز آن مشخص میکند و آن را از هر نشانی وبی واکشی میکند تا در سایتهای تعیینشده (یا همه سایتها) همرسانی کند. این یعنی منبع دقیق و شناختهشدهای را میتوان در سایتها همرسانی کرد، مستقل از ارائه دارایی. این پیشنهاد مزایای امنیتی و چالشهای ایمنی بههمراه دارد.
موارد استفاده
ما بهطور مفصل درباره اهمیت مدلهای ذخیرهسازی در حافظه نهان و ذخیرهسازی هر دارایی در حافظه نهان با Cache Storage API نوشتهایم. Cross-Origin Storage API یک گام فراتر میرود و میتواند زمانی مفید باشد که چندین وبسایت مرتبط (یا غیرمرتبط) نیاز به دسترسی به یک منبع داشته باشند:
- مدلهای هوش مصنوعی: مدلهایی مانند Gemma یا گونههای Llama از حدود یک گیگابایت تا دهها گیگابایت حجم دارند. ذخیره و بازیابی یک نسخه ازطریق COS از بارگیریهای تکراری انبوه جلوگیری میکند. این انگیزه اصلی پشت این پیشنهاد است.
- مدولهای Wasm: چارچوبهایی مانند Flutter فایلهای Wasm را ارسال میکنند که میلیونها بار در روز در هزاران مبدأ متمایز درخواست میشوند و همیشه ازنظر بایت یکسان هستند.
- چارچوبها و کتابخانههای محبوب جاوا اسکریپت: دستهبندی کد فروشنده بهطور جداگانه و بهطور کامل (مانند کتابخانه کامل و بدون هرس React) به چندین برنامه اجازه میدهد یک نسخه ذخیرهشده در حافظه نهان را ازطریق COS همرسانی کنند.
- موتورهای بازی: بازیهای مرورگر ساختهشده روی موتورهایی مانند Godot یا Unity میتوانند زمان اجرای موتور را ازطریق COS همرسانی کنند و فقط داراییهای خاص بازی را ازطریق شبکه واکشی کنند. درگاههای بازی که میزبان بازیهای تفننی زیادی در مبدأها یا iframeهای مختلف هستند بیشترین بهره را میبرند.
- قلمهای وب بزرگ: قلمهای نماد، قلمهای اموجی، و قلمهایی با پوشش گسترده یونیکد در تعداد بسیار زیادی صفحه بارگیری میشوند. همرسانی یکباره آنها ازطریق COS هم به عملکرد و هم به پایداری کمک میکند.
جریان اصلی کار با COS
COS API روش navigator.crossOriginStorage.getFileHandle() را معرفی میکند که ازطریق آن برنامههای وب فایلها را در مرزهای مبدأ ذخیره و بازیابی میکنند، که با درهمساز رمزنگاری شناسایی میشود. این توضیحدهنده مثالی دارد که جریان اصلی کار با API را نشان میدهد.
همین امروز امتحان کنید
درحالحاضر دو روش برای آزمایش کردن COS وجود دارد:
- افزونه مرورگر را از نتبازار Chrome، برافزاهای Firefox، یا فروشگاه برنامههای Safari نصب کنید تا سطح API و همه ادغامها را شبیهسازی کند. میتوانید جریان API را در هر مرورگری آزمایش کنید. یا افزونه را بهصورت ازبستهدرآمده از کد منبع آن بار کنید.
- آزمایش در Chromium: پیادهسازی آزمایشی Chromium وجود دارد. آن را برای macOS در Apple silicon یا Linux x86_64 از goo.gle/cos-chromium بارگیری کنید، سپس
about://flagsرا باز کنید، «Cross-Origin Storage» (فضای ذخیرهسازی میانمبدئی) را جستجو کنید، آن را روی Enabled (فعال) تنظیم کنید، و وقتی از شما خواسته شد، بازراهاندازی کنید. این ساخت شامل یکپارچهسازی DevTools است: فضای ذخیرهسازی میانمبدئی را در برگه برنامه پیدا کنید.
علاقه به بومسازگان
COS پیشنهادی در مراحل اولیه است و تعدادی از پروژهها درحالحاضر پشتیبانی آزمایشی را ارائه میدهند، معمولاً پشت پرچم موافقت و بهصورت لایهای بهعنوان ارتقای پیشرو:
- Emscripten برونداد Wasm تولیدشده را همرسانی میکند.
- Flutter زمان اجرای Skia Wasm خود را همرسانی میکند.
- Transformers.js وزنهای مدل و زمانهای اجرای Wasm را که به آنها وابسته است همرسانی میکند.
- WebLLM مدلها و زمانهای اجرا را همرسانی میکند.
- wllama مدلهای هوش مصنوعی را همرسانی میکند.
- Nuxt.js وابستگیهای مشترک را از «فضای ذخیرهسازی میانمبدئی» بار میکند و افزونه Vite COS را حفظ میکند.
- Prompt API Polyfill مدلهای هوش مصنوعی را در میان باطنهای WebLLM و Transformers.js خود همرسانی میکند.
- Prebid.js دارای توزیع CDN آماده COS از کتابخانه پیشمناقصه است.
استانداردسازی
«فضای ذخیرهسازی میانمبدئی» یک پیشنهاد WICG در مراحل اولیه است. میتوانید بازبینی طراحی TAG W3C اولیه را بخوانید.
- ادغامهای میزبان با نهادهای استاندارد مربوطه ثبت شدهاند:
- مشخصه
crossoriginstorageو مشخصه وارد کردنcrossOriginStorageبا «استاندارد WHATWG HTML» cross-origin-storage()با CSS Working Group- گزینه درخواست
crossOriginStorageبا Fetch Standard
- مشخصه
- آزمایشهای پلاتفرم وب چندمرورگری (درحال انجام)
- مواضع استاندارد از Mozilla و WebKit درخواست شده است.
از بازخورد درباره API و پیشنهاد استقبال میکنیم. میتوانید مشکلات را ثبت کنید، حمایت خود را نشان دهید، یا درخواستهای واکشی را در مخزن «فضای ذخیرهسازی میانمبدئی» باز کنید.
منابع
- توضیحدهنده Cross-Origin Storage API و پیشنویس مشخصات را بخوانید.
- با ستارهدار کردن اشکال چتری «فضای ذخیرهسازی میانمبدئی» و وابستگیهای آن، پیادهسازی COS را در Chrome دنبال کنید.
- توضیحدهنده «فهرست درهمسازی عمومی» را بررسی کنید.
- پرسشنامه امنیت و حریم خصوصی COS را تکمیل کنید.
- ورودی Intent to Prototype و Chrome Platform Status را مرور کنید.
بهعلاوه، این ابزارها و نسخههای نمایشی را بررسی کنید:
مطالعه بیشتر درباره پیشینه
- افزایش امنیت و حریم خصوصی با پارتیشنبندی حافظه نهان
- آزمایش کردن با Cross-Origin Storage API پیشنهادی در Transformers.js
- پارتیشنبندی حافظه نهان HTTP: یک تصویر، دو بار بارگیری شده است توسط Joan León
- Cross-Origin Storage API: Stop Downloading Twice نوشته دنیس مورلو
- میخواستم مرورگر فقط jQuery را ارسال کند. Cross-Origin Storage came for rescue نوشته احمد الفی
گفتگوها و پادکستها
- 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