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ênFileSystemSyncAccessHandle
đều được cho phép. Chỉ cho phép một thực thể củaFileSystemSyncAccessHandle
."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ênFileSystemSyncAccessHandle
mới được phép:read()
,getSize()
và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ênFileSystemSyncAccessHandle
đều được cho phép. Bạn có thể tạo nhiều thực thể củaFileSystemSyncAccessHandle
, 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 Memmott và Rachel Andrew xem xét.