Obsługa wielu czytników i pisarzy w przypadku FileSystemSyncAccessHandle oraz obsługa tylko jednego zapisującego w przypadku FileSystemWritableFileStream.
Wiele operacji odczytu i zapisu w przypadku 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"
: jest to bieżące ustawienie domyślne. Po otwarciu dowolne metody obiektuFileSystemSyncAccessHandle
są dozwolone. Dozwolona jest tylko 1 instancja taguFileSystemSyncAccessHandle
."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ć dowolną liczbę instancji usługiFileSystemSyncAccessHandle
, o ile wszystkie są w trybie 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 otworzyć wiele obiektów FileSystemSyncAccessHandle
, ale nie musi wykonywać operacji zapisu, należy użyć opcji "read-only"
. Ostatnia opcja "readwrite-unsafe"
umożliwia użycie wielu instancji oraz odczyt i zapis. W takim przypadku zapisy mogą być niestabilne, jeśli są wykonywane z kilku kart, a witryny 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 opcji dotyczącej autora na wyłączność. Chrome 121 dodaje do metody FileSystemAccessFileHandle.createWritable()
opcjonalny parametr mode
, który ma następujące wartości:
- Tryb
"exclusive"
: w danym momencie może być tylko jeden autor. "siloed"
tryb: jest to domyślny tryb. 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 wersję próbną dla programistów
Aby przetestować funkcję przed wydaniem Chrome 121, wejdź w tryb testowania przez deweloperów. W tym celu ustaw flagę #file-system-access-locking-scheme
w chrome://flags
na Włączona. 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.