Những điểm cải tiến về API khi làm việc với các tệp trong trình duyệt

Hỗ trợ nhiều độc giả và người viết cho FileSystemSyncAccessHandle và người viết độc quyền cho FileSystemWritableFileStream.

Nhiều độc giả và người viết cho FileSystemSyncAccessHandle

Hệ thống tệp riêng tư gốc (đôi khi còn được gọi là hệ thống tệp bộ chứa) cho phép nhà phát triển truy cập vào các tệp được tối ưu hoá để đạt hiệu suất đọc và ghi tối đa. Việc này xảy ra thông qua các đối tượng FileSystemSyncAccessHandle. Hiện tại, bạn không thể mở nhiều đối tượng FileSystemSyncAccessHandle cho cùng một mục nhập tệp bằng NoModificationAllowedError. Vì có những trường hợp sử dụng mà quy tắc ràng buộc này bị giới hạn, nên Chrome 121 sẽ ra mắt tham số mode mới cho phương thức FileSystemFileHandle.createSyncAccessHandle() với các giá trị chuỗi được phép sau đây:

  • "readwrite": Đây là chế độ mặc định hiện tại. Sau khi mở, mọi phương thức trên FileSystemSyncAccessHandle đều được cho phép. Chỉ cho phép một thực thể của FileSystemSyncAccessHandle.
  • "read-only" : Cho phép nhiều người đọc. Sau khi mở, chỉ cho phép các phương thức giống đọc trên FileSystemSyncAccessHandle: read(), getSize()close(). Bạn có thể tạo nhiều thực thể của FileSystemSyncAccessHandle, miễn là tất cả các thực thể đó ở chế độ chỉ có thể đọc.
  • "readwrite-unsafe": Cho phép nhiều tác giả. Sau khi mở, mọi phương thức trên FileSystemSyncAccessHandle đều được cho phép. Có thể tạo nhiều thực thể của FileSystemSyncAccessHandle, miễn là tất cả các thực thể đó đều ở chế độ không an toàn cho thao tác đọc/ghi.

Hành vi hiện tại được duy trì bằng cách giữ tuỳ chọn "readwrite" làm mặc định, tức là mỗi lần chỉ cho phép một thực thể. Nếu một trang web cần mở nhiều đối tượng FileSystemSyncAccessHandle nhưng không cần thực hiện ghi, thì bạn nên sử dụng tuỳ chọn "read-only". Cuối cùng, tuỳ chọn cuối cùng "readwrite-unsafe" cho phép nhiều thực thể cũng như cả đọc và ghi. Trong trường hợp này, hoạt động ghi có thể không phù hợp nếu được thực hiện qua nhiều thẻ và các trang web sẽ cần cung cấp sơ đồ khoá riêng.

const handle1 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
// This will succeed:
const handle2 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});

Tác giả độc quyền của FileSystemWritableFileStream

Không giống như FileSystemSyncAccessHandle, hiện nay, bạn có thể tạo nhiều thực thể của FileSystemWritableFileStream cho mỗi mục nhập tệp. Còn thiếu là một cách để đưa ra lựa chọn cho một tác giả độc quyền. Chrome 121 thêm tham số mode (không bắt buộc) vào phương thức FileSystemAccessFileHandle.createWritable() có các giá trị sau:

  • Chế độ "exclusive": Mỗi lần chỉ có thể có một tác giả.
  • Chế độ "siloed": Đây là chế độ mặc định hiện tại. Mỗi tác giả được tạo sẽ có tệp hoán đổi riêng.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();

Hỗ trợ trình duyệt

Kể từ Chrome 121, cả hai tính năng, chế độ nhiều trình đọc và người viết của FileSystemSyncAccessHandle, cũng như tác giả độc quyền của FileSystemWritableFileStream, đều được hỗ trợ.

Tham gia chương trình dùng thử của nhà phát triển

Để tham gia bản dùng thử dành cho nhà phát triển và kiểm tra tính năng này trước khi Chrome 121 khởi chạy, hãy đặt cờ #file-system-access-locking-scheme trong chrome://flags thành Enabled (Bật). Điều này sẽ cho phép bạn thử nghiệm tính năng này cục bộ trên máy của mình.

Xác nhận

Bài viết này đã được Daseul Lee, Nathan MemmottRachel Andrew xem xét.