API-verbeteringen voor het werken met bestanden in de browser

Ondersteuning voor meerdere lezers en schrijvers voor FileSystemSyncAccessHandle en exclusieve schrijver voor FileSystemWritableFileStream.

Meerdere lezers en schrijvers voor FileSystemSyncAccessHandle

Het oorspronkelijke privébestandssysteem (soms ook wel het bucketbestandssysteem genoemd) geeft ontwikkelaars toegang tot bestanden die zijn geoptimaliseerd voor maximale lees- en schrijfprestaties. Dit gebeurt via FileSystemSyncAccessHandle -objecten. Momenteel mislukt het openen van meerdere FileSystemSyncAccessHandle objecten voor hetzelfde bestandsitem met een NoModificationAllowedError . Omdat er gebruiksscenario's zijn waarin deze beperking beperkend is, introduceert Chrome 121 een nieuwe mode voor de methode FileSystemFileHandle.createSyncAccessHandle() met de volgende toegestane tekenreekswaarden:

  • "readwrite" : Dit is de huidige standaard. Eenmaal geopend zijn alle methoden op FileSystemSyncAccessHandle toegestaan. Er is slechts één exemplaar van FileSystemSyncAccessHandle toegestaan.
  • "read-only" : Meerdere lezers toestaan. Eenmaal geopend zijn alleen leesachtige methoden op FileSystemSyncAccessHandle toegestaan: read() , getSize() en close() . Er kunnen meerdere exemplaren van FileSystemSyncAccessHandle worden gemaakt, zolang ze zich allemaal in de alleen-lezenmodus bevinden.
  • "readwrite-unsafe" : Meerdere schrijvers toestaan. Eenmaal geopend zijn alle methoden op FileSystemSyncAccessHandle toegestaan. Er kunnen meerdere exemplaren van FileSystemSyncAccessHandle worden gemaakt, zolang deze zich allemaal in de lees- en schrijfonveilige modus bevinden.

Het huidige gedrag blijft behouden door de optie "readwrite" als standaard te behouden, waardoor slechts één exemplaar tegelijk mogelijk is. Als een site meerdere FileSystemSyncAccessHandle objecten moet openen maar geen schrijfbewerkingen hoeft uit te voeren, moet de optie "read-only" worden gebruikt. Ten slotte staat de laatste optie "readwrite-unsafe" meerdere exemplaren toe, evenals zowel lezen als schrijven. In dit geval kunnen schrijfbewerkingen lastig zijn als ze vanaf meerdere tabbladen worden uitgevoerd, en sites zouden hun eigen vergrendelingsschema moeten bieden.

const handle1 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
// This will succeed:
const handle2 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});

Exclusieve schrijver voor FileSystemWritableFileStream

In tegenstelling tot FileSystemSyncAccessHandle kunnen er tegenwoordig meerdere exemplaren van FileSystemWritableFileStream per bestandsinvoer worden gemaakt. Wat ontbreekt is een manier om een ​​exclusieve schrijver een optie te bieden. Chrome 121 voegt een optionele mode toe aan de FileSystemAccessFileHandle.createWritable() -methode die de volgende waarden heeft:

  • "exclusive" modus: Er kan slechts één schrijver tegelijk bestaan.
  • "siloed" -modus: dit is de huidige standaard. Elke gemaakte schrijver heeft zijn eigen wisselbestand.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();

Browser-ondersteuning

Beide functies, meerdere lezers en schrijvers voor FileSystemSyncAccessHandle en exclusieve schrijver voor FileSystemWritableFileStream , worden ondersteund vanaf Chrome 121.

Ga naar de proefversie van de ontwikkeling

Als u wilt deelnemen aan de proefversie van de ontwikkeling om de functie te testen voordat Chrome 121 wordt gestart, stelt u de vlag #file-system-access-locking-scheme in chrome://flags in op Enabled . Hiermee kunt u de functie lokaal op uw machine testen.

Dankbetuigingen

Dit artikel is beoordeeld door Daseul Lee , Nathan Memmott en Rachel Andrew .