Ngày xuất bản: 10 tháng 11 năm 2026
Các ứng dụng web hiện đại thường phụ thuộc vào những thành phần lớn, chẳng hạn như khung JavaScript, công cụ phát triển trò chơi và mô hình AI. Mặc dù các trang web đang sử dụng cùng một tài sản, nhưng mỗi trang web phải tải xuống và lưu trữ bản sao riêng của từng tài sản.
Với Cross-Origin Storage API (gọi tắt là COS) được đề xuất, ứng dụng khách sẽ chỉ định nội dung mà ứng dụng đang tìm kiếm bằng hàm băm và tìm nạp nội dung đó từ bất kỳ URL nào để chia sẻ nội dung đó trên các trang web được chỉ định (hoặc tất cả trang web). Điều này có nghĩa là một tài nguyên chính xác, đã biết có thể được chia sẻ trên các trang web, độc lập với việc phân phát thành phần. Đề xuất này mang lại cả lợi ích về bảo mật và thách thức về an toàn.
Trường hợp sử dụng
Chúng tôi đã viết rất nhiều về tầm quan trọng của mô hình lưu vào bộ nhớ đệm và lưu mọi thành phần vào bộ nhớ đệm bằng Cache Storage API. Cross-Origin Storage API tiến thêm một bước và có thể mang lại lợi ích khi nhiều trang web có liên quan (hoặc không liên quan) cần truy cập vào cùng một tài nguyên:
- Mô hình AI: Các mô hình như Gemma hoặc các biến thể Llama có dung lượng từ khoảng 1 gigabyte đến hàng chục gigabyte. Việc lưu trữ và truy xuất một bản sao thông qua COS giúp tránh được việc tải xuống nhiều bản sao trùng lặp. Đây là động lực chính đằng sau đề xuất này.
- Mô-đun Wasm: Các khung như Flutter cung cấp tệp Wasm được yêu cầu hàng triệu lần mỗi ngày trên hàng nghìn nguồn gốc riêng biệt, luôn giống hệt nhau về byte.
- Các thư viện và khung JavaScript phổ biến: Việc đóng gói mã của nhà cung cấp một cách riêng biệt và toàn bộ (chẳng hạn như thư viện React hoàn chỉnh, không bị loại bỏ mã không dùng đến) cho phép nhiều ứng dụng chia sẻ một bản sao được lưu vào bộ nhớ đệm thông qua COS.
- Công cụ phát triển trò chơi: Trò chơi trên trình duyệt được xây dựng trên các công cụ như Godot hoặc Unity có thể chia sẻ thời gian chạy của công cụ thông qua COS và chỉ tìm nạp các thành phần dành riêng cho trò chơi qua mạng. Các cổng trò chơi lưu trữ nhiều trò chơi phổ thông từ nhiều nguồn hoặc iframe khác nhau sẽ hưởng lợi nhiều nhất.
- Phông chữ web lớn: Phông chữ biểu tượng, phông chữ biểu tượng cảm xúc và phông chữ có phạm vi bao phủ Unicode rộng được tải xuống trên một số lượng lớn trang. Việc chia sẻ các tệp này một lần thông qua COS giúp cải thiện cả hiệu suất và tính bền vững.
Quy trình cơ bản khi làm việc với COS
API COS giới thiệu một phương thức navigator.crossOriginStorage.getFileHandle() mà thông qua đó, các ứng dụng web lưu trữ và truy xuất tệp trên các ranh giới gốc, được xác định bằng một hàm băm mật mã. Tài liệu giải thích có một ví dụ minh hoạ quy trình cơ bản khi làm việc với API.
Dùng thử ngay hôm nay
Hiện có hai cách để thử nghiệm COS ngay bây giờ:
- Cài đặt tiện ích của trình duyệt từ Cửa hàng Chrome trực tuyến, Tiện ích bổ sung của Firefox hoặc cửa hàng ứng dụng của Safari để polyfill giao diện API và tất cả các thành phần tích hợp. Bạn có thể kiểm thử quy trình API trong bất kỳ trình duyệt nào. Hoặc tải tiện ích đã giải nén từ mã nguồn của tiện ích.
- Thử nghiệm trong Chromium: Có một cách triển khai thử nghiệm trong Chromium. Tải xuống cho macOS trên Apple silicon hoặc Linux x86_64 từ goo.gle/cos-chromium, sau đó mở
about://flags, tìm "Cross-Origin Storage", đặt thành Enabled và khởi động lại khi được nhắc. Bản dựng này có tích hợp Công cụ cho nhà phát triển: tìm Bộ nhớ khác nguồn gốc trong thẻ Ứng dụng.
Mối quan tâm về hệ sinh thái
COS là một đề xuất ở giai đoạn đầu và một số dự án đã cung cấp tính năng hỗ trợ thử nghiệm, thường là sau cờ chọn sử dụng và được phân lớp dưới dạng cải tiến tăng dần:
- Emscripten chia sẻ kết quả Wasm được tạo.
- Flutter chia sẻ thời gian chạy Skia Wasm.
- Transformers.js chia sẻ trọng số mô hình và thời gian chạy Wasm mà chúng phụ thuộc.
- WebLLM chia sẻ các mô hình và thời gian chạy.
- wllama chia sẻ các mô hình AI.
- Nuxt.js tải các phần phụ thuộc dùng chung từ Bộ nhớ khác nguồn gốc và duy trì một trình bổ trợ Vite COS.
- Prompt API Polyfill chia sẻ các mô hình AI trên phần phụ trợ WebLLM và Transformers.js.
- Prebid.js có một bản phân phối CDN sẵn sàng cho COS của thư viện đặt giá thầu dựa vào phần đầu trang.
Chuẩn hoá
Bộ nhớ nhiều nguồn gốc là một đề xuất của WICG trong giai đoạn đầu. Bạn có thể đọc Bài đánh giá thiết kế TAG của W3C sớm.
- Các hoạt động tích hợp máy chủ lưu trữ được nộp cho các cơ quan tiêu chuẩn tương ứng:
- Thuộc tính
crossoriginstoragevà thuộc tính nhậpcrossOriginStoragetheo Tiêu chuẩn HTML của WHATWG cross-origin-storage()với Nhóm công tác CSS- Lựa chọn yêu cầu
crossOriginStoragevới Tiêu chuẩn tìm nạp
- Thuộc tính
- Web Platform Tests trên nhiều trình duyệt (đang trong quá trình phát triển)
- Chúng tôi đã yêu cầu Mozilla và WebKit đưa ra quan điểm về tiêu chuẩn.
Chúng tôi rất mong nhận được ý kiến phản hồi về API và đề xuất này. Bạn có thể gửi vấn đề, bày tỏ sự ủng hộ hoặc mở yêu cầu lấy dữ liệu trong kho lưu trữ Bộ nhớ khác nguồn gốc.
Tài nguyên
- Đọc bài giải thích về Cross-Origin Storage API và bản nháp thông số kỹ thuật.
- Theo dõi quá trình triển khai COS trong Chrome bằng cách gắn dấu sao cho lỗi chung về Bộ nhớ khác nguồn gốc và các phần phụ thuộc của lỗi này.
- Xem tài liệu giải thích về Danh sách băm công khai.
- Trả lời bộ câu hỏi về bảo mật và quyền riêng tư của COS.
- Xem xét Ý định tạo nguyên mẫu và mục Trạng thái của nền tảng Chrome.
Ngoài ra, hãy xem các công cụ và bản minh hoạ sau:
Tài liệu đọc thêm về bối cảnh
- Tăng cường bảo mật và quyền riêng tư bằng cách phân vùng bộ nhớ đệm
- Thử nghiệm API Bộ nhớ khác nguồn gốc được đề xuất trong Transformers.js
- Phân vùng bộ nhớ đệm HTTP: cùng một hình ảnh, tải xuống hai lần của Joan León
- Cross-Origin Storage API: Stop Downloading Twice (API lưu trữ trên nhiều nguồn gốc: Ngừng tải xuống hai lần) của Dennis Morello
- Tôi muốn trình duyệt chỉ cung cấp jQuery. Cross-Origin Storage came for rescue của Ahmad Alfy
Bài nói chuyện và podcast
- ShopTalk Show 732: Thomas Steiner on New Cross-Origin Storage APIs (podcast)
- Working Draft 723: API lưu trữ khác nguồn gốc (podcast bằng tiếng Đức)
- WeAreDevelopers: Bộ nhớ khác nguồn gốc là gì (podcast)
- Bộ nhớ trên nhiều nguồn gốc: bộ nhớ đệm dùng chung cho web tại JSNation US 2026