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 emFileSystemSyncAccessHandle
são permitidos. Apenas uma instância deFileSystemSyncAccessHandle
é permitida."read-only"
: permite vários leitores. Depois de abertos, apenas métodos de leitura emFileSystemSyncAccessHandle
são permitidos:read()
,getSize()
eclose()
. Várias instâncias deFileSystemSyncAccessHandle
podem ser criadas, desde que todas estejam no modo somente leitura."readwrite-unsafe"
: permite vários gravadores. Depois de aberto, todos os métodos emFileSystemSyncAccessHandle
são permitidos. Várias instâncias deFileSystemSyncAccessHandle
podem 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 executar 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 de FileSystemWritableFileStream
Ao contrário de FileSystemSyncAccessHandle
, várias instâncias de FileSystemWritableFileStream
podem ser criadas por entrada de arquivo atualmente. 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á seu próprio arquivo de troca.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();
Suporte ao navegador
Os recursos, vários leitores e gravadores no FileSystemSyncAccessHandle
e gravador exclusivo para FileSystemWritableFileStream
, são compatíveis a partir do Chrome 121.
Entre no teste do desenvolvedor
Para entrar no teste do desenvolvedor e testar o recurso antes do lançamento do Chrome 121, defina a sinalização #file-system-access-locking-scheme
em chrome://flags
como Ativada. Isso permite testar o recurso localmente na sua máquina.
Agradecimentos
Este artigo foi revisado por Daseul Lee, Nathan Memmott e Rachel Andrew.