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 trình đọc và trình ghi cho FileSystemSyncAccessHandle và trình ghi độc quyền cho FileSystemWritableFileStream.

Nhiều trình đọc và trình ghi 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 chứa 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á để có hiệu suất đọc và ghi tối đa. Quá trình này diễn ra thông qua các đối tượng FileSystemSyncAccessHandle. Hiện tại, việc cố gắng mở nhiều đối tượng FileSystemSyncAccessHandle cho cùng một mục nhập tệp sẽ không thành công với NoModificationAllowedError. Vì có một số trường hợp sử dụng mà điều kiện ràng buộc này đang hạn chế, nên Chrome 121 sẽ giới thiệu 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:

  • "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 trình đọc. Sau khi mở, chỉ các phương thức giống như đọc trên FileSystemSyncAccessHandle mới được phép: read(), getSize()close(). Bạn có thể tạo nhiều thực thể FileSystemSyncAccessHandle miễn là tất cả các thực thể đó đều ở chế độ chỉ có thể đọc.
  • "readwrite-unsafe": Cho phép nhiều trình ghi. Sau khi mở, mọi phương thức trên FileSystemSyncAccessHandle đều được cho phép. 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ể đó đều ở chế độ không an toàn khi đọc và ghi.

Hành vi hiện tại được giữ nguyên bằng cách giữ tuỳ chọn "readwrite" làm mặc định, chỉ cho phép một thực thể tại một thời điểm. 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 thao tác 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ả quyền đọc và ghi. Trong trường hợp này, các hoạt động ghi có thể bị lỗi nếu được thực hiện từ nhiều thẻ và các trang web cần phải cung cấp lược đồ khoá riêng.

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

Trình ghi độc quyền cho FileSystemWritableFileStream

Không giống như FileSystemSyncAccessHandle, hôm nay, bạn có thể tạo nhiều thực thể của FileSystemWritableFileStream cho mỗi mục nhập tệp. Thiếu một cách để cung cấp lựa chọn cho một nhà văn độc quyền. Chrome 121 thêm một 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 người viết.
  • Chế độ "siloed": Đây là chế độ mặc định hiện tại. Mỗi trình ghi đượ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

Cả hai tính năng, nhiều trình đọc và trình ghi cho FileSystemSyncAccessHandle và trình ghi độc quyền cho FileSystemWritableFileStream, đều được hỗ trợ kể từ Chrome 121.

Bắt đầu dùng thử dành cho nhà phát triển

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

Lời cảm ơn

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