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 private bestandssysteem (soms ook wel het bucketbestandssysteem genoemd) stelt ontwikkelaars in staat toegang te krijgen tot bestanden die geoptimaliseerd zijn voor maximale lees- en schrijfprestaties. Dit gebeurt via FileSystemSyncAccessHandle -objecten. Momenteel mislukt het openen van meerdere FileSystemSyncAccessHandle -objecten voor dezelfde bestandsvermelding met een NoModificationAllowedError . Omdat er use cases zijn waarin deze beperking beperkend is, introduceert Chrome 121 een nieuwe mode voor de FileSystemFileHandle.createSyncAccessHandle() -methode met de volgende toegestane tekenreekswaarden:

  • "readwrite" : Dit is de huidige standaard. Eenmaal geopend, zijn alle methoden op FileSystemSyncAccessHandle toegestaan. Slechts één instantie van FileSystemSyncAccessHandle is toegestaan.
  • "read-only" : Staat meerdere lezers toe. Eenmaal geopend, zijn alleen lees-achtige methoden op FileSystemSyncAccessHandle toegestaan: read() , getSize() en close() . Er kunnen meerdere instanties van FileSystemSyncAccessHandle worden aangemaakt, zolang ze allemaal in de alleen-lezen-modus staan.
  • "readwrite-unsafe" : Staat meerdere schrijvers toe. Eenmaal geopend, zijn alle methoden op FileSystemSyncAccessHandle toegestaan. Er kunnen meerdere instanties van FileSystemSyncAccessHandle worden aangemaakt, zolang ze allemaal in de readwrite-unsafe modus staan.

Het huidige gedrag blijft behouden door de optie "readwrite" als standaard te behouden, die slechts één instance tegelijk toestaat. Als een site meerdere FileSystemSyncAccessHandle objecten moet openen, maar geen schrijfbewerkingen hoeft uit te voeren, moet de optie "read-only" worden gebruikt. De laatste optie, "readwrite-unsafe" staat meerdere instances toe, evenals zowel lezen als schrijven. In dit geval kunnen schrijfbewerkingen riskant zijn als ze vanaf meerdere tabbladen worden uitgevoerd, en moeten sites hun eigen vergrendelingsschema opgeven.

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 instanties van FileSystemWritableFileStream per bestandsitem worden aangemaakt. Wat ontbreekt, is een manier om een ​​optie voor een exclusieve schrijver te bieden. Chrome 121 voegt een optionele mode toe aan de FileSystemAccessFileHandle.createWritable() -methode met de volgende waarden:

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

Browserondersteuning

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

Doe mee aan de dev-proefperiode

Om deel te nemen aan de dev-test om de functie te testen voordat Chrome 121 wordt gelanceerd, stelt u de vlag #file-system-access-locking-scheme in chrome://flags in op ' Ingeschakeld '. Zo kunt u de functie lokaal op uw computer testen.

Dankbetuigingen

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

,

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

Meerdere lezers en schrijvers voor FileSystemSyncAccessHandle

Het oorspronkelijke private bestandssysteem (soms ook wel het bucketbestandssysteem genoemd) stelt ontwikkelaars in staat toegang te krijgen tot bestanden die geoptimaliseerd zijn voor maximale lees- en schrijfprestaties. Dit gebeurt via FileSystemSyncAccessHandle -objecten. Momenteel mislukt het openen van meerdere FileSystemSyncAccessHandle -objecten voor dezelfde bestandsvermelding met een NoModificationAllowedError . Omdat er use cases zijn waarin deze beperking beperkend is, introduceert Chrome 121 een nieuwe mode voor de FileSystemFileHandle.createSyncAccessHandle() -methode met de volgende toegestane tekenreekswaarden:

  • "readwrite" : Dit is de huidige standaard. Eenmaal geopend, zijn alle methoden op FileSystemSyncAccessHandle toegestaan. Slechts één instantie van FileSystemSyncAccessHandle is toegestaan.
  • "read-only" : Staat meerdere lezers toe. Eenmaal geopend, zijn alleen lees-achtige methoden op FileSystemSyncAccessHandle toegestaan: read() , getSize() en close() . Er kunnen meerdere instanties van FileSystemSyncAccessHandle worden aangemaakt, zolang ze allemaal in de alleen-lezen-modus staan.
  • "readwrite-unsafe" : Staat meerdere schrijvers toe. Eenmaal geopend, zijn alle methoden op FileSystemSyncAccessHandle toegestaan. Er kunnen meerdere instanties van FileSystemSyncAccessHandle worden aangemaakt, zolang ze allemaal in de readwrite-unsafe modus staan.

Het huidige gedrag blijft behouden door de optie "readwrite" als standaard te behouden, die slechts één instance tegelijk toestaat. Als een site meerdere FileSystemSyncAccessHandle objecten moet openen, maar geen schrijfbewerkingen hoeft uit te voeren, moet de optie "read-only" worden gebruikt. De laatste optie, "readwrite-unsafe" staat meerdere instances toe, evenals zowel lezen als schrijven. In dit geval kunnen schrijfbewerkingen riskant zijn als ze vanaf meerdere tabbladen worden uitgevoerd, en moeten sites hun eigen vergrendelingsschema opgeven.

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 instanties van FileSystemWritableFileStream per bestandsitem worden aangemaakt. Wat ontbreekt, is een manier om een ​​optie voor een exclusieve schrijver te bieden. Chrome 121 voegt een optionele mode toe aan de FileSystemAccessFileHandle.createWritable() -methode met de volgende waarden:

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

Browserondersteuning

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

Doe mee aan de dev-proefperiode

Om deel te nemen aan de dev-test om de functie te testen voordat Chrome 121 wordt gelanceerd, stelt u de vlag #file-system-access-locking-scheme in chrome://flags in op ' Ingeschakeld '. Zo kunt u de functie lokaal op uw computer testen.

Dankbetuigingen

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