Obsługa wielu czytników i pisarzy w przypadku FileSystemSyncAccessHandle oraz obsługa tylko jednego zapisującego w przypadku FileSystemWritableFileStream.
Wielu czytników i zapisów dla FileSystemSyncAccessHandle
Prywatny system plików źródła (czasami nazywany systemem plików zasobnika) umożliwia deweloperom dostęp do plików zoptymalizowanych pod kątem maksymalnej wydajności odczytu i zapisu. Dzieje się to za pomocą obiektów FileSystemSyncAccessHandle
. Obecnie próba otwarcia wielu obiektów FileSystemSyncAccessHandle
dla tego samego wpisu pliku kończy się niepowodzeniem z błędem NoModificationAllowedError
. Ponieważ w niektórych przypadkach to ograniczenie może być uciążliwe, w Chrome 121 wprowadzamy nowy parametr mode
dla metody FileSystemFileHandle.createSyncAccessHandle()
z tymi dozwolonymi wartościami ciągu znaków:
"readwrite"
: bieżąca wartość domyślna. Po otwarciu dozwolone są wszystkie metody wFileSystemSyncAccessHandle
. Dozwolone jest tylko jedno wystąpienieFileSystemSyncAccessHandle
."read-only"
: pozwala na korzystanie z urządzenia przez wielu użytkowników. Po otwarciu tylko metodyFileSystemSyncAccessHandle
typu „tylko do odczytu” są dozwolone:read()
,getSize()
iclose()
. Można utworzyć dowolną liczbę instancji usługiFileSystemSyncAccessHandle
, o ile wszystkie są w trybie tylko do odczytu."readwrite-unsafe"
: pozwala na wielu autorów. Po otwarciu dowolne metody obiektuFileSystemSyncAccessHandle
są dozwolone. Można utworzyć wiele instancjiFileSystemSyncAccessHandle
, o ile wszystkie będą działać w trybie niebezpiecznym do odczytu i zapisu.
Zachowane zostanie obecne działanie, ponieważ opcja "readwrite"
pozostanie domyślną opcją, która pozwala na uruchomienie tylko jednego wystąpienia. Jeśli witryna musi otwierać wiele obiektów FileSystemSyncAccessHandle
, ale nie musi wykonywać zapisu, należy użyć opcji "read-only"
. Ostatnia opcja "readwrite-unsafe"
umożliwia tworzenie wielu instancji oraz odczyt i zapis. W takim przypadku zapisy mogą być dla dorosłych, jeśli są wykonywane na wielu kartach, a strony muszą mieć własny schemat blokowania.
const handle1 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
// This will succeed:
const handle2 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
Wyłączny zapis w przypadku FileSystemWritableFileStream
W przeciwieństwie do FileSystemSyncAccessHandle
obecnie można utworzyć wiele wystąpień parametru FileSystemWritableFileStream
na wpis pliku. Brakuje w nim opcji dla pisarzy, którzy mają z nimi kontakt na wyłączność. Chrome 121 dodaje do metody FileSystemAccessFileHandle.createWritable()
opcjonalny parametr mode
, który ma te wartości:
- Tryb
"exclusive"
: w danym momencie może być tylko jeden autor. - Tryb
"siloed"
: bieżący tryb domyślny. Każdy utworzony skrypt będzie miał własny plik wymiany.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();
Obsługa przeglądarek
Od wersji 121 Chrome obsługuje obie funkcje: czytniki i pisarki dla FileSystemSyncAccessHandle
oraz pisanie tylko dla FileSystemWritableFileStream
.
Wpisz okres próbny dla deweloperów
Aby wziąć udział w testach wersji deweloperskiej i przetestować tę funkcję przed wprowadzeniem Chrome 121, ustaw flagę #file-system-access-locking-scheme
w systemie chrome://flags
na Włączono. Dzięki temu możesz przetestować funkcję lokalnie na swoim komputerze.
Podziękowania
Ten artykuł został sprawdzony przez Daseul Lee, Nathan Memmott i Rachel Andrew.