Supporto per più lettori e scrittori per FileSystemSyncAccessHandle e per writer esclusivo per FileSystemWritableFileStream.
Più lettori e scrittori per FileSystemSyncAccessHandle
Il file system privato dell'origine (a volte chiamato anche file system del bucket) consente agli sviluppatori di accedere ai file ottimizzati per ottenere le massime prestazioni in lettura e scrittura. Ciò avviene tramite gli oggetti FileSystemSyncAccessHandle
. Al momento, il tentativo di aprire più oggetti FileSystemSyncAccessHandle
per la stessa voce di file non riesce con un NoModificationAllowedError
. Poiché in alcuni casi d'uso questo vincolo limita questo vincolo, Chrome 121 introduce un nuovo parametro mode
per il metodo FileSystemFileHandle.createSyncAccessHandle()
con i seguenti valori stringa consentiti:
"readwrite"
: questa è l'impostazione predefinita corrente. Una volta aperto, è consentito qualsiasi metodo suFileSystemSyncAccessHandle
. È consentita una sola istanza diFileSystemSyncAccessHandle
."read-only"
: consente più lettori. Una volta aperti, sono consentiti solo metodi di tipo 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, è consentito qualsiasi metodo suFileSystemSyncAccessHandle
. È possibile creare più istanze diFileSystemSyncAccessHandle
, purché siano tutte in modalità lettura/scrittura non sicura.
Il comportamento attuale viene preservato 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 le scritture, è necessario utilizzare l'opzione "read-only"
. Infine, l'ultima opzione "readwrite-unsafe"
consente l'utilizzo di più istanze, nonché di operazioni di lettura e scrittura. In questo caso, le scritture possono essere per adulti se eseguite da più schede e i siti dovrebbero 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 offrire un'opzione a uno scrittore esclusivo. Chrome 121 aggiunge al metodo FileSystemAccessFileHandle.createWritable()
un parametro facoltativo mode
contenente i seguenti valori:
- Modalità
"exclusive"
: può esistere un solo autore alla volta. - Modalità
"siloed"
: è l'attuale impostazione predefinita. Ogni writer creato avrà il proprio file di scambio.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();
Supporto del browser
Entrambe le funzionalità, più lettori e scrittori per FileSystemSyncAccessHandle
e writer esclusivo per FileSystemWritableFileStream
, sono supportate a partire da Chrome 121.
Accedi alla prova sviluppatore
Per accedere alla prova di sviluppo per testare la funzionalità prima del lancio di Chrome 121, imposta il flag #file-system-access-locking-scheme
in chrome://flags
su Enabled (Attivato). In questo modo potrai testare la funzionalità localmente sulla tua macchina.
Ringraziamenti
Questo articolo è stato esaminato da Daseul Lee, Nathan Memmott e Rachel Andrew.