Поддержка нескольких читателей и писателей для FileSystemSyncAccessHandle и эксклюзивного писателя для FileSystemWritableFileStream.
Несколько читателей и писателей для FileSystemSyncAccessHandle
Частная файловая система origin (иногда также называемая файловой системой bucket) позволяет разработчикам получать доступ к файлам, оптимизированным для максимальной производительности чтения и записи. Это происходит через объекты FileSystemSyncAccessHandle
. В настоящее время попытка открыть несколько объектов FileSystemSyncAccessHandle
для одной и той же записи файла завершается ошибкой NoModificationAllowedError
. Поскольку существуют случаи использования, когда это ограничение является ограничивающим, Chrome 121 вводит новый параметр mode
для метода FileSystemFileHandle.createSyncAccessHandle()
со следующими допустимыми строковыми значениями:
-
"readwrite"
: Это текущее значение по умолчанию. После открытия разрешены любые методыFileSystemSyncAccessHandle
. Разрешен только один экземплярFileSystemSyncAccessHandle
. -
"read-only"
: разрешает несколько читателей. После открытия разрешены только методы чтенияFileSystemSyncAccessHandle
:read()
,getSize()
иclose()
. Можно создать несколько экземпляровFileSystemSyncAccessHandle
, если все они находятся в режиме только для чтения. -
"readwrite-unsafe"
: разрешает несколько записей. После открытия разрешены любые методыFileSystemSyncAccessHandle
. Можно создать несколько экземпляровFileSystemSyncAccessHandle
, если все они находятся в режиме readwrite-unsafe.
Текущее поведение сохраняется за счет сохранения параметра "readwrite"
в качестве значения по умолчанию, что позволяет за раз открывать только один экземпляр. Если сайту необходимо открыть несколько объектов FileSystemSyncAccessHandle
, но не требуется выполнять запись, следует использовать параметр "read-only"
. Наконец, последний параметр "readwrite-unsafe"
допускает несколько экземпляров, а также чтение и запись. В этом случае запись может быть опасной, если выполняется с нескольких вкладок, и сайтам необходимо будет предоставить собственную схему блокировки.
const handle1 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
// This will succeed:
const handle2 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
Эксклюзивный писатель для FileSystemWritableFileStream
В отличие от FileSystemSyncAccessHandle
, сегодня можно создавать несколько экземпляров FileSystemWritableFileStream
для каждой записи файла. Чего не хватает, так это способа предоставить возможность для эксклюзивного писателя. Chrome 121 добавляет необязательный параметр mode
в метод FileSystemAccessFileHandle.createWritable()
, который имеет следующие значения:
-
"exclusive"
режим: одновременно может существовать только один писатель. -
"siloed"
режим: это текущий режим по умолчанию. Каждый созданный писатель будет иметь свой собственный файл подкачки.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();
Поддержка браузера
Обе функции — несколько средств чтения и записи для FileSystemSyncAccessHandle
и эксклюзивная функция записи для FileSystemWritableFileStream
— поддерживаются начиная с Chrome 121.
Примите участие в испытательном сроке разработки
Чтобы войти в dev-тестирование для тестирования функции перед запуском Chrome 121, установите флаг #file-system-access-locking-scheme
в chrome://flags
на Enabled . Это позволит вам протестировать функцию локально на вашем компьютере.
Благодарности
Эту статью рецензировали Дасеул Ли , Натан Меммотт и Рейчел Эндрю .
,Поддержка нескольких читателей и писателей для FileSystemSyncAccessHandle и эксклюзивного писателя для FileSystemWritableFileStream.
Несколько читателей и писателей для FileSystemSyncAccessHandle
Частная файловая система origin (иногда также называемая файловой системой bucket) позволяет разработчикам получать доступ к файлам, оптимизированным для максимальной производительности чтения и записи. Это происходит через объекты FileSystemSyncAccessHandle
. В настоящее время попытка открыть несколько объектов FileSystemSyncAccessHandle
для одной и той же записи файла завершается ошибкой NoModificationAllowedError
. Поскольку существуют случаи использования, когда это ограничение является ограничивающим, Chrome 121 вводит новый параметр mode
для метода FileSystemFileHandle.createSyncAccessHandle()
со следующими допустимыми строковыми значениями:
-
"readwrite"
: Это текущее значение по умолчанию. После открытия разрешены любые методыFileSystemSyncAccessHandle
. Разрешен только один экземплярFileSystemSyncAccessHandle
. -
"read-only"
: разрешает несколько читателей. После открытия разрешены только методы чтенияFileSystemSyncAccessHandle
:read()
,getSize()
иclose()
. Можно создать несколько экземпляровFileSystemSyncAccessHandle
, если все они находятся в режиме только для чтения. -
"readwrite-unsafe"
: разрешает несколько записей. После открытия разрешены любые методыFileSystemSyncAccessHandle
. Можно создать несколько экземпляровFileSystemSyncAccessHandle
, если все они находятся в режиме readwrite-unsafe.
Текущее поведение сохраняется за счет сохранения параметра "readwrite"
в качестве значения по умолчанию, что позволяет за раз открывать только один экземпляр. Если сайту необходимо открыть несколько объектов FileSystemSyncAccessHandle
, но не требуется выполнять запись, следует использовать параметр "read-only"
. Наконец, последний параметр "readwrite-unsafe"
допускает несколько экземпляров, а также чтение и запись. В этом случае запись может быть опасной, если выполняется с нескольких вкладок, и сайтам необходимо будет предоставить собственную схему блокировки.
const handle1 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
// This will succeed:
const handle2 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
Эксклюзивный писатель для FileSystemWritableFileStream
В отличие от FileSystemSyncAccessHandle
, сегодня можно создавать несколько экземпляров FileSystemWritableFileStream
для каждой записи файла. Чего не хватает, так это способа предоставить возможность для эксклюзивного писателя. Chrome 121 добавляет необязательный параметр mode
в метод FileSystemAccessFileHandle.createWritable()
, который имеет следующие значения:
-
"exclusive"
режим: одновременно может существовать только один писатель. -
"siloed"
режим: это текущий режим по умолчанию. Каждый созданный писатель будет иметь свой собственный файл подкачки.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();
Поддержка браузера
Обе функции — несколько средств чтения и записи для FileSystemSyncAccessHandle
и эксклюзивная функция записи для FileSystemWritableFileStream
— поддерживаются начиная с Chrome 121.
Примите участие в испытательном сроке разработки
Чтобы войти в dev-тестирование для тестирования функции перед запуском Chrome 121, установите флаг #file-system-access-locking-scheme
в chrome://flags
на Enabled . Это позволит вам протестировать функцию локально на вашем компьютере.
Благодарности
Эту статью рецензировали Дасеул Ли , Натан Меммотт и Рейчел Эндрю .