Miglioramenti dell'API per l'uso dei file nel browser

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 su FileSystemSyncAccessHandle. È consentita una sola istanza di FileSystemSyncAccessHandle.
  • "read-only" : consente più lettori. Una volta aperta, sono consentiti solo i metodi simili alla lettura su FileSystemSyncAccessHandle: read(), getSize() e close(). È possibile creare più istanze di FileSystemSyncAccessHandle purché siano tutte in modalità di sola lettura.
  • "readwrite-unsafe": consente più autori. Una volta aperto, sono consentiti tutti i metodi su FileSystemSyncAccessHandle. È possibile creare più istanze di FileSystemSyncAccessHandle, 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.