Améliorations de l'API pour l'utilisation de fichiers dans le navigateur

Prise en charge de plusieurs lecteurs et rédacteurs pour FileSystemSyncAccessHandle et rédacteur exclusif pour FileSystemWritableFileStream.

Plusieurs lecteurs et rédacteurs pour FileSystemSyncAccessHandle

Le système de fichiers privé d'origine (parfois appelé système de fichiers de bucket) permet aux développeurs d'accéder à des fichiers optimisés pour des performances de lecture et d'écriture maximales. Cela se fait via des objets FileSystemSyncAccessHandle. Actuellement, la tentative d'ouverture de plusieurs objets FileSystemSyncAccessHandle pour la même entrée de fichier échoue avec une erreur NoModificationAllowedError. Dans certains cas d'utilisation, cette contrainte est limitative. Chrome 121 introduit donc un nouveau paramètre mode pour la méthode FileSystemFileHandle.createSyncAccessHandle() avec les valeurs de chaîne autorisées suivantes:

  • "readwrite": valeur par défaut actuelle. Une fois ouvert, toutes les méthodes sur FileSystemSyncAccessHandle sont autorisées. Une seule instance de FileSystemSyncAccessHandle est autorisée.
  • "read-only" : permet plusieurs lecteurs. Une fois ouvert, seules les méthodes de lecture sur FileSystemSyncAccessHandle sont autorisées: read(), getSize() et close(). Vous pouvez créer plusieurs instances de FileSystemSyncAccessHandle tant qu'elles sont toutes en mode lecture seule.
  • "readwrite-unsafe": autorise plusieurs scénaristes. Une fois ouvert, toutes les méthodes sur FileSystemSyncAccessHandle sont autorisées. Vous pouvez créer plusieurs instances de FileSystemSyncAccessHandle tant qu'elles sont toutes en mode lecture/écriture non sécurisé.

Le comportement actuel est conservé en conservant l'option "readwrite" par défaut, qui n'autorise qu'une seule instance à la fois. Si un site doit ouvrir plusieurs objets FileSystemSyncAccessHandle, mais n'a pas besoin d'effectuer d'écritures, l'option "read-only" doit être utilisée. Enfin, la dernière option "readwrite-unsafe" permet d'utiliser plusieurs instances, ainsi que les opérations de lecture et d'écriture. Dans ce cas, les écritures peuvent être rapides si elles sont effectuées à partir de plusieurs onglets, et les sites doivent fournir leur propre schéma de verrouillage.

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

Écrivain exclusif pour FileSystemWritableFileStream

Contrairement à FileSystemSyncAccessHandle, vous pouvez désormais créer plusieurs instances de FileSystemWritableFileStream par entrée de fichier. Il manque une option pour un auteur exclusif. Chrome 121 ajoute un paramètre mode facultatif à la méthode FileSystemAccessFileHandle.createWritable(), qui a les valeurs suivantes:

  • Mode "exclusive": un seul écrivain peut exister à la fois.
  • Mode "siloed": il s'agit du mode par défaut actuel. Chaque rédacteur créé aura son propre fichier d'échange.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();

Prise en charge des navigateurs

Les deux fonctionnalités, à savoir les lecteurs et les rédacteurs multiples pour FileSystemSyncAccessHandle et le rédacteur exclusif pour FileSystemWritableFileStream, sont compatibles à partir de Chrome 121.

Saisissez l'essai de développement

Pour participer à l'essai en développement afin de tester la fonctionnalité avant le lancement de Chrome 121, définissez l'indicateur #file-system-access-locking-scheme dans chrome://flags sur Activé. Vous pourrez ainsi tester la fonctionnalité en local sur votre ordinateur.

Remerciements

Cet article a été relu par Daseul Lee, Nathan Memmott et Rachel Andrew.