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 opFileSystemSyncAccessHandle
toegestaan. Er is slechts één exemplaar vanFileSystemSyncAccessHandle
toegestaan. -
"read-only"
: Meerdere lezers toestaan. Eenmaal geopend zijn alleen leesachtige methoden opFileSystemSyncAccessHandle
toegestaan:read()
,getSize()
enclose()
. Er kunnen meerdere exemplaren vanFileSystemSyncAccessHandle
worden gemaakt, zolang ze zich allemaal in de alleen-lezenmodus bevinden. -
"readwrite-unsafe"
: Meerdere schrijvers toestaan. Eenmaal geopend zijn alle methoden opFileSystemSyncAccessHandle
toegestaan. Er kunnen meerdere exemplaren vanFileSystemSyncAccessHandle
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 .