Giới thiệu Cross-Origin Storage API

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.
Hai trò chơi Three.js không liên quan, Descent và Quake, dùng chung một bản sao của công cụ thông qua COS, được kiểm tra trong Công cụ cho nhà phát triển.
Hai trò chơi Three.js không liên quan, Descent (trong thẻ nền) và Quake (trong thẻ nền trước), chia sẻ một bản sao của công cụ thông qua COS, được kiểm tra trong Công cụ cho nhà phát triển. Ảnh chụp màn hình này là của một bản dựng Chromium thử nghiệm và có thể không phản ánh thiết kế cuối cù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ờ:

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.

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

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

Bài nói chuyện và podcast