API-Verbesserungen für die Arbeit mit Dateien im Browser

Unterstützung für mehrere Leser und Autoren für FileSystemSyncAccessHandle und exklusiven Autor für FileSystemWritableFileStream.

Mehrere Leser und Autoren für FileSystemSyncAccessHandle

Das ursprungsbezogene private Dateisystem (manchmal auch als Bucket-Dateisystem bezeichnet) ermöglicht Entwicklern den Zugriff auf Dateien, die für maximale Lese- und Schreibleistung optimiert sind. Dies erfolgt über FileSystemSyncAccessHandle-Objekte. Derzeit schlägt der Versuch, mehrere FileSystemSyncAccessHandle-Objekte für denselben Dateieintrag zu öffnen, mit einem NoModificationAllowedError fehl. Da diese Einschränkung in einigen Anwendungsfällen einschränkend ist, wird in Chrome 121 ein neuer mode-Parameter für die FileSystemFileHandle.createSyncAccessHandle()-Methode mit den folgenden zulässigen Stringwerten eingeführt:

  • "readwrite": Dies ist der aktuelle Standardwert. Sobald die Datei geöffnet ist, sind alle Methoden für FileSystemSyncAccessHandle zulässig. Es ist nur eine Instanz von FileSystemSyncAccessHandle zulässig.
  • "read-only" : Ermöglicht mehrere Leser. Nach dem Öffnen sind nur lesefähige Methoden für FileSystemSyncAccessHandle zulässig: read(), getSize() und close(). Es können mehrere Instanzen von FileSystemSyncAccessHandle erstellt werden, sofern sie alle im Nur-Lese-Modus sind.
  • "readwrite-unsafe": Ermöglicht mehrere Autoren. Sobald die Datei geöffnet ist, sind alle Methoden für FileSystemSyncAccessHandle zulässig. Es können mehrere Instanzen von FileSystemSyncAccessHandle erstellt werden, sofern sich alle im schreibgeschützten Modus befinden.

Das aktuelle Verhalten wird beibehalten, indem die Option "readwrite" als Standard beibehalten wird, die jeweils nur eine Instanz zulässt. Wenn eine Website mehrere FileSystemSyncAccessHandle-Objekte öffnen muss, aber keine Schreibvorgänge ausführen muss, sollte die Option "read-only" verwendet werden. Mit der letzten Option "readwrite-unsafe" sind mehrere Instanzen sowie Lese- und Schreibvorgänge möglich. In diesem Fall können Schreibvorgänge, die über mehrere Tabs ausgeführt werden, zu Race Conditions führen. Websites müssen daher ein eigenes Sperrschema bereitstellen.

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

Exklusiver Writer für FileSystemWritableFileStream

Im Gegensatz zu FileSystemSyncAccessHandle können heute mehrere Instanzen von FileSystemWritableFileStream pro Dateieintrag erstellt werden. Was fehlt, ist eine Möglichkeit, eine Option für einen exklusiven Autor anzubieten. In Chrome 121 wird der FileSystemAccessFileHandle.createWritable()-Methode ein optionaler mode-Parameter mit den folgenden Werten hinzugefügt:

  • "exclusive"-Modus: Es kann jeweils nur einen Autor geben.
  • "siloed"-Modus: Dies ist die aktuelle Standardeinstellung. Jeder erstellte Autor hat eine eigene Auslagerungsdatei.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();

Unterstützte Browser

Beide Funktionen, mehrere Leser und Schreiber für FileSystemSyncAccessHandle und exklusiver Schreiber für FileSystemWritableFileStream, werden ab Chrome 121 unterstützt.

Entwicklertestzeitraum starten

Wenn Sie den Entwicklertestzeitraum nutzen möchten, um die Funktion vor der Einführung von Chrome 121 zu testen, setzen Sie das Flag #file-system-access-locking-scheme in chrome://flags auf Aktiviert. So können Sie die Funktion lokal auf Ihrem Computer testen.

Danksagungen

Dieser Artikel wurde von Daseul Lee, Nathan Memmott und Rachel Andrew geprüft.