Suporte a vários leitores e gravadores para FileSystemSyncAccessHandle e gravador exclusivo para FileSystemWritableFileStream.
Vários leitores e gravadores para FileSystemSyncAccessHandle
O sistema de arquivos particular de origem (também chamado de sistema de arquivos do bucket) permite que os desenvolvedores acessem arquivos otimizados para o máximo desempenho de leitura e gravação. Isso acontece com objetos FileSystemSyncAccessHandle. No momento, a tentativa de abrir vários objetos FileSystemSyncAccessHandle para a mesma entrada de arquivo falha com um NoModificationAllowedError. Como há casos de uso em que essa restrição é limitadora, o Chrome 121 apresenta um novo parâmetro mode para o método FileSystemFileHandle.createSyncAccessHandle() com os seguintes valores de string permitidos:
- "readwrite": é o padrão atual. Depois de aberto, todos os métodos em- FileSystemSyncAccessHandlesão permitidos. Apenas uma instância de- FileSystemSyncAccessHandleé permitida.
- "read-only": permite vários leitores. Depois de abertos, apenas métodos semelhantes a leitura em- FileSystemSyncAccessHandlesão permitidos:- read(),- getSize()e- close(). Várias instâncias de- FileSystemSyncAccessHandlepodem ser criadas, desde que todas estejam no modo somente leitura.
- "readwrite-unsafe": permite vários escritores. Depois de aberto, todos os métodos em- FileSystemSyncAccessHandlesão permitidos. Várias instâncias de- FileSystemSyncAccessHandlepodem ser criadas, desde que todas estejam no modo de leitura e gravação não seguro.
O comportamento atual é preservado mantendo a opção "readwrite" como padrão, o que permite apenas uma instância por vez. Se um site precisar abrir vários objetos FileSystemSyncAccessHandle, mas não precisar realizar gravações, use a opção "read-only". Por fim, a última opção "readwrite-unsafe" permite várias instâncias, além de leitura e gravação. Nesse caso, as gravações podem ser lentas se forem realizadas em várias guias, e os sites precisarão fornecer o próprio esquema de bloqueio.
const handle1 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
// This will succeed:
const handle2 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
Gravador exclusivo para FileSystemWritableFileStream
Diferentemente do FileSystemSyncAccessHandle, várias instâncias de FileSystemWritableFileStream podem ser criadas por entrada de arquivo hoje. O que falta é uma opção para um escritor exclusivo. O Chrome 121 adiciona um parâmetro mode opcional ao método FileSystemAccessFileHandle.createWritable() com os seguintes valores:
- Modo "exclusive": apenas um escritor pode existir por vez.
- Modo "siloed": é o padrão atual. Cada escritor criado terá o próprio arquivo de troca.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();
Suporte ao navegador
Os dois recursos, vários leitores e gravadores para FileSystemSyncAccessHandle e gravador exclusivo para FileSystemWritableFileStream, têm suporte no Chrome 121.
Entrar no teste de desenvolvedor
Para entrar no teste de desenvolvedor e testar o recurso antes do lançamento do Chrome 121, defina a flag #file-system-access-locking-scheme em chrome://flags como Enabled. Isso permite testar o recurso localmente na sua máquina.
Agradecimentos
Este artigo foi revisado por Daseul Lee, Nathan Memmott e Rachel Andrew.
