Ulepszenia interfejsu API umożliwiające pracę z plikami w przeglądarce

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 w FileSystemSyncAccessHandle są dozwolone. Dozwolone jest tylko jedno wystąpienie obiektu FileSystemSyncAccessHandle.
  • "read-only" : pozwala wielu czytelnikom. Po otwarciu w FileSystemSyncAccessHandle dozwolone są tylko metody odczytu takie jak: read(), getSize() i close(). Możesz utworzyć wiele wystąpień obiektu FileSystemSyncAccessHandle, o ile wszystkie są w trybie „tylko do odczytu”.
  • "readwrite-unsafe": umożliwia wielu autorom. Po otwarciu wszystkie metody w FileSystemSyncAccessHandle są dozwolone. Można utworzyć wiele wystąpień obiektu FileSystemSyncAccessHandle, 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.