Obsługa wielu czytników i zapisujących w zakresie FileSystemSyncAccessHandle oraz wyłącznego zapisu do plików FileSystemWritableFileStream.
Wiele czytników i zapisujących dla FileSystemSyncAccessHandle
Prywatny system plików źródła (nazywany czasem systemem plików zasobnika) umożliwia programistom dostęp do plików zoptymalizowanych pod kątem maksymalnej wydajności odczytu i zapisu. Dzieje się tak za pomocą obiektów FileSystemSyncAccessHandle
. Obecnie próba otwarcia wielu obiektów FileSystemSyncAccessHandle
dla tego samego wpisu pliku kończy się błędem NoModificationAllowedError
. W pewnych przypadkach to ograniczenie jest ograniczone, dlatego Chrome 121 wprowadza w metodzie FileSystemFileHandle.createSyncAccessHandle()
nowy parametr mode
z tymi dozwolonymi wartościami w postaci ciągu znaków:
"readwrite"
: aktualna wartość domyślna. Po otwarciu wszystkie metody wFileSystemSyncAccessHandle
są dozwolone. Dozwolone jest tylko jedno wystąpienie obiektuFileSystemSyncAccessHandle
."read-only"
: pozwala wielu czytelnikom. Po otwarciu wFileSystemSyncAccessHandle
dozwolone są tylko metody odczytu takie jak:read()
,getSize()
iclose()
. Możesz utworzyć wiele wystąpień obiektuFileSystemSyncAccessHandle
, o ile wszystkie są w trybie „tylko do odczytu”."readwrite-unsafe"
: umożliwia wielu autorom. Po otwarciu wszystkie metody wFileSystemSyncAccessHandle
są dozwolone. Można utworzyć wiele wystąpień obiektuFileSystemSyncAccessHandle
, o ile wszystkie są w trybie niebezpiecznym dla odczytu i zapisu.
Bieżące działanie jest zachowywane przez pozostawienie opcji "readwrite"
jako domyślnej, która dopuszcza tylko 1 instancję naraz. Jeśli strona musi otwierać wiele obiektów FileSystemSyncAccessHandle
, ale nie musi wykonywać zapisów, należy użyć opcji "read-only"
. Ostatnia opcja ("readwrite-unsafe"
) dopuszcza wiele instancji, a także odczyt i zapis. W takim przypadku zapisy mogą być wykonywane na wielu kartach, a strony będą musiały mieć własny schemat blokowania.
const handle1 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
// This will succeed:
const handle2 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
Zapis na wyłączność dla FileSystemWritableFileStream
W przeciwieństwie do funkcji FileSystemSyncAccessHandle
obecnie w jednym wpisie pliku można utworzyć kilka wystąpień FileSystemWritableFileStream
. To rozwiązanie, które będzie dostępne dla wyjątkowego autora. Chrome 121 dodaje do metody FileSystemAccessFileHandle.createWritable()
opcjonalny parametr mode
, który ma te wartości:
- Tryb
"exclusive"
: w danym momencie może istnieć tylko jeden zapisujący. - Tryb
"siloed"
: to jest aktualne ustawienie domyślne. Każdy utworzony zapisujący będzie miał własny plik zamiennego.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();
Obsługiwane przeglądarki
Od Chrome 121 można korzystać z obu funkcji, z wielu czytników i autorów dostępnych w usłudze FileSystemSyncAccessHandle
oraz z wersji przeznaczonej na wyłączność w usłudze FileSystemWritableFileStream
.
Rozpocznij okres próbny w wersji deweloperskiej
Aby wziąć udział w testowej wersji deweloperskiej i przetestować tę funkcję przed wprowadzeniem Chrome 121, ustaw flagę #file-system-access-locking-scheme
w polu chrome://flags
na Włączone. Umożliwi Ci to testowanie funkcji lokalnie na swoim komputerze.
Podziękowania
Ten artykuł napisali Daseul Lee, Nathan Memmott i Rachel Andrew.