Compatibilidad con varios lectores y escritores para FileSystemSyncAccessHandle y escritor exclusivo para FileSystemWritableFileStream.
Varios lectores y escritores para FileSystemSyncAccessHandle
El sistema de archivos privado de origen (también conocido como sistema de archivos del bucket) permite a los desarrolladores acceder a archivos optimizados para obtener el máximo rendimiento de lectura y escritura. Esto se hace a través de objetos FileSystemSyncAccessHandle
. Actualmente, el intento de abrir varios objetos FileSystemSyncAccessHandle
para la misma entrada de archivo falla con una NoModificationAllowedError
. Dado que hay casos de uso en los que esta restricción es limitante, Chrome 121 presenta un nuevo parámetro mode
para el método FileSystemFileHandle.createSyncAccessHandle()
con los siguientes valores de cadena permitidos:
"readwrite"
: Este es el valor predeterminado actual. Una vez abierto, se permiten todos los métodos deFileSystemSyncAccessHandle
. Solo se permite una instancia deFileSystemSyncAccessHandle
."read-only"
: Permite varios lectores. Una vez abierto, solo se permiten métodos de lectura enFileSystemSyncAccessHandle
:read()
,getSize()
yclose()
. Se pueden crear varias instancias deFileSystemSyncAccessHandle
, siempre que todas estén en modo de solo lectura."readwrite-unsafe"
: Permite varios escritores. Una vez que se abra, se permitirá cualquier método enFileSystemSyncAccessHandle
. Se pueden crear varias instancias deFileSystemSyncAccessHandle
, siempre y cuando todas estén en modo de lectura y escritura no seguro.
El comportamiento actual se conserva manteniendo la opción "readwrite"
como predeterminada, que solo permite una instancia a la vez. Si un sitio necesita abrir varios objetos FileSystemSyncAccessHandle
, pero no necesita realizar operaciones de escritura, se debe usar la opción "read-only"
. Por último, la última opción "readwrite-unsafe"
permite varias instancias, así como operaciones de lectura y escritura. En este caso, las operaciones de escritura pueden ser inestables si se realizan desde varias pestañas, y los sitios deben proporcionar su propio esquema de bloqueo.
const handle1 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
// This will succeed:
const handle2 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
Escritor exclusivo para FileSystemWritableFileStream
A diferencia de FileSystemSyncAccessHandle
, hoy se pueden crear varias instancias de FileSystemWritableFileStream
por entrada de archivo. Lo que falta es una forma de proporcionar una opción para un escritor exclusivo. En Chrome 121, se agrega un parámetro mode
opcional al método FileSystemAccessFileHandle.createWritable()
, que tiene los siguientes valores:
- Modo
"exclusive"
: Solo puede existir un escritor a la vez. - Modo
"siloed"
: Este es el valor predeterminado actual. Cada escritor creado tendrá su propio archivo de intercambio.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();
Navegadores compatibles
Ambas funciones, múltiples lectores y escritores para FileSystemSyncAccessHandle
y escritor exclusivo para FileSystemWritableFileStream
, son compatibles a partir de Chrome 121.
Ingresa a la prueba para desarrolladores
Para ingresar a la prueba para desarrolladores y probar la función antes del lanzamiento de Chrome 121, establece la marca #file-system-access-locking-scheme
en chrome://flags
como Habilitada. Esto te permitirá probar la función de forma local en tu máquina.
Agradecimientos
Daseul Lee, Nathan Memmott y Rachel Andrew revisaron este artículo.