เผยแพร่เมื่อ: 10 พฤศจิกายน 2569
เว็บแอปสมัยใหม่มักอาศัยชิ้นงานขนาดใหญ่ เช่น เฟรมเวิร์ก JavaScript, เกมเอนจิน และโมเดล AI แม้ว่าเว็บไซต์จะใช้ชิ้นงานที่เหมือนกัน แต่แต่ละเว็บไซต์ก็ต้องดาวน์โหลดและจัดเก็บสำเนาของชิ้นงานแต่ละรายการของตนเอง
ด้วย Cross-Origin Storage API แบบข้ามต้นทาง ที่เสนอ หรือเรียกสั้นๆ ว่า COS ไคลเอ็นต์จะระบุเนื้อหาที่ต้องการตามแฮช และดึงข้อมูลจาก URL ใดก็ได้เพื่อแชร์ในเว็บไซต์ที่กำหนด (หรือทุกเว็บไซต์) ซึ่งหมายความว่าสามารถแชร์ทรัพยากรที่ทราบและตรงกันข้ามเว็บไซต์ได้ โดยไม่ขึ้นอยู่กับการแสดงเนื้อหา ข้อเสนอนี้มาพร้อมกับข้อดีด้านความปลอดภัยและความท้าทายด้านความปลอดภัย
กรณีการใช้งาน
เราได้เขียนบทความเกี่ยวกับความสำคัญของโมเดลการแคชและการแคชเนื้อหาด้วย Cache Storage API ไว้โดยละเอียด Cross-Origin Storage API มีความสามารถมากกว่านั้น และอาจเป็นประโยชน์เมื่อเว็บไซต์ที่เกี่ยวข้อง (หรืออื่นๆ) หลายเว็บไซต์ต้องการเข้าถึงทรัพยากรเดียวกัน ดังนี้
- โมเดล AI: โมเดลอย่าง Gemma หรือตัวแปร Llama มีขนาดตั้งแต่ประมาณ 1 กิกะไบต์ไปจนถึงหลายสิบกิกะไบต์ การจัดเก็บและดึงข้อมูลสำเนาเดียวผ่าน COS จะช่วยหลีกเลี่ยงการดาวน์โหลดที่ซ้ำกันจำนวนมาก ซึ่งเป็นแรงจูงใจสำคัญเบื้องหลังข้อเสนอนี้
- โมดูล Wasm: เฟรมเวิร์กอย่าง Flutter จะส่งไฟล์ Wasm ที่มีการขอหลายล้านครั้งต่อวันจากต้นทางที่แตกต่างกันหลายพันรายการ โดยมีไบต์ที่เหมือนกันเสมอ
- ไลบรารีและเฟรมเวิร์ก JavaScript ยอดนิยม: การรวมโค้ดของผู้ให้บริการแยกกันและทั้งหมด (เช่น ไลบรารี React ที่สมบูรณ์และไม่มีการทำ Tree Shaking) ช่วยให้แอปหลายแอปแชร์สำเนาที่แคชไว้รายการเดียวผ่าน COS ได้
- เกมเอนจิน: เกมบนเบราว์เซอร์ที่สร้างบนเอนจินอย่าง Godot หรือ Unity สามารถแชร์รันไทม์ของเอนจินผ่าน COS และดึงเฉพาะเนื้อหาเฉพาะเกมผ่านเครือข่ายได้ พอร์ทัลเกมที่โฮสต์เกมเล่นฆ่าเวลาจำนวนมากจากต้นทางหรือ iframe ที่แตกต่างกันจะได้รับประโยชน์มากที่สุด
- แบบอักษรบนเว็บขนาดใหญ่: ระบบจะดาวน์โหลดแบบอักษรไอคอน แบบอักษรอีโมจิ และแบบอักษรที่มีการครอบคลุม Unicode ในวงกว้างในหน้าเว็บจำนวนมาก การแชร์ข้อมูลเหล่านี้ผ่าน COS เพียงครั้งเดียวจะช่วยทั้งในด้านประสิทธิภาพและความยั่งยืน
ขั้นตอนพื้นฐานในการทำงานกับ COS
COS API มีเมธอด navigator.crossOriginStorage.getFileHandle() ซึ่งเว็บแอปใช้จัดเก็บและดึงข้อมูลไฟล์ข้ามขอบเขตต้นทาง โดยระบุด้วยแฮชแบบเข้ารหัส คำอธิบายมีตัวอย่างที่แสดงขั้นตอนพื้นฐานในการทำงานกับ API
ลองใช้งานได้แล้ววันนี้
คุณทดลองใช้ COS ได้ 2 วิธีดังนี้
- ติดตั้งส่วนขยายเบราว์เซอร์จาก Chrome เว็บสโตร์, ส่วนเสริมของ Firefox หรือ Safari App Store เพื่อใช้ Polyfill กับ API Surface และการผสานรวมทั้งหมด คุณทดสอบขั้นตอนของ API ในเบราว์เซอร์ใดก็ได้ หรือโหลดส่วนขยายที่คลายแพ็กเกจแล้วจากซอร์สโค้ด
- การทดสอบใน Chromium: มีการใช้งาน Chromium เวอร์ชันทดลอง ดาวน์โหลดสำหรับ macOS บน Apple Silicon หรือ Linux x86_64 จาก goo.gle/cos-chromium จากนั้นเปิด
about://flagsค้นหา "Cross-Origin Storage" ตั้งค่าเป็นเปิดใช้ และรีสตาร์ทเมื่อได้รับข้อความแจ้ง บิลด์นี้มีการผสานรวมเครื่องมือสำหรับนักพัฒนาเว็บ: ค้นหาพื้นที่เก็บข้อมูลแบบข้ามต้นทางในแท็บแอปพลิเคชัน
ความสนใจในระบบนิเวศ
COS เป็นข้อเสนอในระยะเริ่มต้น และหลายโปรเจ็กต์ได้จัดส่งการสนับสนุนเวอร์ชันทดลองแล้ว โดยปกติจะอยู่หลังแฟล็กการเลือกใช้และแบ่งชั้นเป็นการเพิ่มประสิทธิภาพแบบต่อเนื่อง ดังนี้
- Emscripten จะแชร์เอาต์พุต Wasm ที่สร้างขึ้น
- Flutter แชร์รันไทม์ Skia Wasm
- Transformers.js แชร์น้ำหนักโมเดลและรันไทม์ Wasm ที่ใช้
- WebLLM แชร์โมเดลและรันไทม์
- wllama แชร์โมเดล AI
- Nuxt.js โหลดทรัพยากร Dependency ที่แชร์จากพื้นที่เก็บข้อมูลแบบข้ามต้นทางและดูแลรักษาปลั๊กอิน Vite COS
- Prompt API Polyfill แชร์โมเดล AI ในแบ็กเอนด์ WebLLM และ Transformers.js
- Prebid.js มีการกระจาย CDN ที่พร้อมใช้งาน COS ของไลบรารีการเสนอราคาส่วนหัว
การกำหนดมาตรฐาน
พื้นที่เก็บข้อมูลแบบข้ามต้นทางเป็นข้อเสนอ WICG ในระยะเริ่มต้น คุณสามารถอ่านการตรวจสอบการออกแบบ TAG ของ W3C ในช่วงแรกได้
- การผสานรวมโฮสต์จะได้รับการยื่นต่อหน่วยงานมาตรฐานที่เกี่ยวข้อง ดังนี้
- แอตทริบิวต์
crossoriginstorageและแอตทริบิวต์การนำเข้าcrossOriginStorageที่มีมาตรฐาน HTML ของ WHATWG cross-origin-storage()กับ CSS Working Group- ตัวเลือกคำขอ
crossOriginStorageที่มีมาตรฐานการดึงข้อมูล
- แอตทริบิวต์
- การทดสอบแพลตฟอร์มเว็บข้ามเบราว์เซอร์ (อยู่ระหว่างดำเนินการ)
- เราได้ขอจุดยืนด้านมาตรฐานจาก Mozilla และ WebKit แล้ว
เรายินดีรับฟังความคิดเห็นเกี่ยวกับ API และข้อเสนอนี้ คุณสามารถรายงานปัญหา แสดงการสนับสนุน หรือเปิด Pull Request ในที่เก็บข้อมูลแบบข้ามต้นทางได้
แหล่งข้อมูล
- อ่านคำอธิบายสำหรับ Cross-Origin Storage API และฉบับร่างของข้อกำหนด
- ติดตามการติดตั้งใช้งาน COS ใน Chrome โดยติดดาวข้อบกพร่องที่ครอบคลุมพื้นที่เก็บข้อมูลแบบข้ามต้นทางและทรัพยากร Dependency
- ดูคำอธิบายรายการแฮชสาธารณะ
- ทำแบบสอบถามด้านความปลอดภัยและความเป็นส่วนตัวของ COS
- ตรวจสอบความตั้งใจที่จะสร้างต้นแบบและรายการสถานะแพลตฟอร์ม Chrome
นอกจากนี้ โปรดดูเครื่องมือและการสาธิตต่อไปนี้
การอ่านข้อมูลเบื้องหลังเพิ่มเติม
- การเพิ่มความปลอดภัยและความเป็นส่วนตัวด้วยการแบ่งพาร์ติชันแคช
- การทดสอบ Cross-Origin Storage API ที่เสนอใน Transformers.js
- การแบ่งพาร์ติชันแคช HTTP: รูปภาพเดียวกันที่ดาวน์โหลด 2 ครั้ง โดย Joan León
- Cross-Origin Storage API: Stop Downloading Twice โดย Dennis Morello
- ฉันอยากให้เบราว์เซอร์ใช้ jQuery เท่านั้น Cross-Origin Storage แบบข้ามต้นทาง มาช่วย โดย 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 (พอดแคสต์)
- Cross-Origin Storage: a shared cache for the web ที่ JSNation US 2026