Supporto di più lettori e scrittori per FileSystemSyncAccessHandle e dello scrittore esclusivo per FileSystemWritableFileStream.
Più lettori e scrittori per FileSystemSyncAccessHandle
Il file system privato di origine (a volte indicato anche come file system del bucket) consente agli sviluppatori di accedere ai file ottimizzati per le massime prestazioni di lettura e scrittura. Ciò avviene tramite gli oggetti FileSystemSyncAccessHandle
. Al momento, il tentativo di aprire più oggetti FileSystemSyncAccessHandle
per la stessa voce del file non va a buon fine con un NoModificationAllowedError
. Poiché esistono casi d'uso in cui questo vincolo è limitante, Chrome 121 introduce un nuovo parametro mode
per il metodo FileSystemFileHandle.createSyncAccessHandle()
con i seguenti valori di stringa consentiti:
"readwrite"
: questo è il valore predefinito attuale. Una volta aperto, sono consentiti tutti i metodi suFileSystemSyncAccessHandle
. È consentita una sola istanza diFileSystemSyncAccessHandle
."read-only"
: consente più lettori. Una volta aperta, sono consentiti solo i metodi simili alla lettura suFileSystemSyncAccessHandle
:read()
,getSize()
eclose()
. È possibile creare più istanze diFileSystemSyncAccessHandle
purché siano tutte in modalità di sola lettura."readwrite-unsafe"
: consente più autori. Una volta aperto, sono consentiti tutti i metodi suFileSystemSyncAccessHandle
. È possibile creare più istanze diFileSystemSyncAccessHandle
, purché tutte siano in modalità non sicura di lettura/scrittura.
Il comportamento attuale viene mantenuto mantenendo l'opzione "readwrite"
come predefinita, che consente una sola istanza alla volta. Se un sito deve aprire più oggetti FileSystemSyncAccessHandle
, ma non deve eseguire scritture, deve essere utilizzata l'opzione "read-only"
. Infine, l'ultima opzione "readwrite-unsafe"
consente più istanze, nonché lettura e scrittura. In questo caso, le scritture possono essere rapide se eseguite da più schede e i siti devono fornire il proprio schema di blocco.
const handle1 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
// This will succeed:
const handle2 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
Writer esclusivo per FileSystemWritableFileStream
A differenza di FileSystemSyncAccessHandle
, oggi è possibile creare più istanze di FileSystemWritableFileStream
per ogni voce di file. Manca un modo per fornire un'opzione per un autore esclusivo. Chrome 121 aggiunge un parametro mode
facoltativo al metodo FileSystemAccessFileHandle.createWritable()
con i seguenti valori:
- Modalità
"exclusive"
: può esistere un solo autore alla volta. - Modalità
"siloed"
: questa è l'impostazione predefinita attuale. Ogni scrittore creato avrà il proprio file di scambio.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();
Supporto browser
Entrambe le funzionalità, più lettori e autori per FileSystemSyncAccessHandle
e autore esclusivo per FileSystemWritableFileStream
, sono supportate a partire da Chrome 121.
Avvia la prova per sviluppatori
Per partecipare alla prova per sviluppatori e testare la funzionalità prima del lancio di Chrome 121, imposta il flag #file-system-access-locking-scheme
in chrome://flags
su Attivato. In questo modo potrai testare la funzionalità in locale sulla tua macchina.
Ringraziamenti
Questo articolo è stato esaminato da Daseul Lee, Nathan Memmott e Rachel Andrew.