Tarayıcıda dosyalarla çalışmaya yönelik API iyileştirmeleri

FileSystemSyncAccessHandle'ın birden fazla okuyucu ve yazar desteği, FileSystemWritableFileStream için ise özel yazıcı desteği.

FileSystemSyncAccessHandle'ın birden fazla okuyucu ve yazıcı

Kaynak gizli dosya sistemi (bazen paket dosya sistemi olarak da adlandırılır), geliştiricilerin maksimum okuma ve yazma performansı için optimize edilmiş dosyalara erişmesine olanak tanır. Bu işlem FileSystemSyncAccessHandle nesneleri aracılığıyla yapılır. Şu anda aynı dosya girişi için birden çok FileSystemSyncAccessHandle nesnesini açma girişimi NoModificationAllowedError hatasıyla başarısız oluyor. Bu kısıtlamanın sınırlandığı kullanım alanları olduğundan Chrome 121, FileSystemFileHandle.createSyncAccessHandle() yöntemi için aşağıdaki izin verilen dize değerleriyle yeni bir mode parametresi sunmaktadır:

  • "readwrite": Bu, geçerli varsayılan ayardır. Açıldığında, FileSystemSyncAccessHandle üzerinde tüm yöntemlere izin verilir. Yalnızca bir FileSystemSyncAccessHandle örneğine izin verilir.
  • "read-only" : Birden çok okuyucuya izin verir. Açıldığında, FileSystemSyncAccessHandle üzerinde yalnızca okuma benzeri yöntemlere izin verilir: read(), getSize() ve close(). Hepsi salt okuma modunda olduğu sürece birden çok FileSystemSyncAccessHandle örneği oluşturulabilir.
  • "readwrite-unsafe": Birden fazla yazara izin verir. Açıldığında, FileSystemSyncAccessHandle üzerinde tüm yöntemlere izin verilir. Hepsi okuma-yazma güvenli olmayan modda olduğu sürece birden fazla FileSystemSyncAccessHandle örneği oluşturulabilir.

Tek seferde yalnızca bir örneğe izin veren "readwrite" seçeneği varsayılan olarak korunarak mevcut davranış korunur. Bir sitenin birden çok FileSystemSyncAccessHandle nesnesi açması gerekiyorsa ancak yazma işlemi yapması gerekmiyorsa "read-only" seçeneği kullanılmalıdır. Son olarak son "readwrite-unsafe" seçeneği, hem okuma hem de yazmanın yanı sıra birden çok örneğine izin verir. Bu durumda, yazma işlemleri birden çok sekmeden gerçekleştirildiğinde müstehcen olabilir ve sitelerin kendi kilitleme düzenlerini sağlamaları gerekir.

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

FileSystemWritableFileStream için özel yazar

FileSystemSyncAccessHandle işlevinin aksine şu anda dosya girişi başına birden fazla FileSystemWritableFileStream örneği oluşturulabilir. Eksik olan, özel bir yazara seçenek sunmanın bir yoludur. Chrome 121, FileSystemAccessFileHandle.createWritable() yöntemine aşağıdaki değerlere sahip isteğe bağlı bir mode parametresi ekler:

  • "exclusive" modu: Aynı anda yalnızca bir yazar olabilir.
  • "siloed" modu: Bu, geçerli varsayılan moddur. Oluşturulan her yazarın kendi değiştirme dosyası olur.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();

Tarayıcı desteği

Her iki özellik de (FileSystemSyncAccessHandle için birden fazla okuyucu, yazar ve FileSystemWritableFileStream yayıncısının özel yazarı) Chrome 121 itibarıyla desteklenmektedir.

Geliştirici deneme sürümünü başlatın

Chrome 121 kullanıma sunulmadan önce geliştirme deneme sürümüne girerek özelliği test etmek için chrome://flags içindeki #file-system-access-locking-scheme işaretini Etkin olarak ayarlayın. Böylece, özelliği makinenizde yerel olarak test edebilirsiniz.

Teşekkür

Bu makale Daseul Lee, Nathan Memmott ve Rachel Andrew tarafından incelendi.