تحسينات واجهة برمجة التطبيقات للعمل مع الملفات في المتصفح

إتاحة قراء وكاتبين متعدّدين لواجهة FileSystemSyncAccessHandle وكاتب حصري لواجهة FileSystemWritableFileStream

قراء وكاتبون متعدّدون لـ FileSystemSyncAccessHandle

يسمح نظام الملفات الخاص بالمصدر (المعروف أحيانًا أيضًا باسم نظام ملفات الحزمة) للمطوّرين بالوصول إلى الملفات المحسّنة لتحقيق أفضل أداء للقراءة والكتابة. ويتم ذلك من خلال عناصر FileSystemSyncAccessHandle. في الوقت الحالي، تؤدي محاولة فتح عناصر FileSystemSyncAccessHandle متعددة لإدخال الملف نفسه إلى ظهور خطأ NoModificationAllowedError. بما أنّ هناك حالات استخدام يكون فيها هذا القيد محدودًا، يقدّم الإصدار 121 من Chrome مَعلمة mode جديدة لطريقة FileSystemFileHandle.createSyncAccessHandle() مع قيم السلاسل المسموح بها التالية:

  • "readwrite": هذا هو الإعداد التلقائي الحالي. بعد فتح الرابط، يُسمح باستخدام أي طرق في FileSystemSyncAccessHandle. يُسمح بمثيل واحد فقط من FileSystemSyncAccessHandle.
  • "read-only" : السماح بإضافة قراء متعدّدين بعد فتح الملف، يُسمح فقط باستخدام طرق القراءة في FileSystemSyncAccessHandle: read() وgetSize() وclose(). يمكن إنشاء نُسخ متعددة من FileSystemSyncAccessHandle ما دامت جميعها في وضع القراءة فقط.
  • "readwrite-unsafe": السماح بإضافة مؤلفين متعدّدين بعد فتح الرابط، يُسمح باستخدام أي طرق في FileSystemSyncAccessHandle. يمكن إنشاء عدّة نُسخ من FileSystemSyncAccessHandle طالما أنّها كلها في الوضع غير الآمن للقراءة والكتابة.

يتم الاحتفاظ بالسلوك الحالي من خلال إبقاء الخيار "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 لكل إدخال ملف اليوم. وما ينقصه هو توفير خيار لكاتب حصري. يضيف الإصدار 121 من Chrome مَعلمة mode اختيارية إلى طريقة FileSystemAccessFileHandle.createWritable() التي تحتوي على القيم التالية:

  • وضع "exclusive": لا يمكن إنشاء أكثر من كاتب واحد في كل مرة.
  • وضع "siloed": هذا هو الوضع التلقائي الحالي. سيكون لكل كاتب تم إنشاؤه ملف تبادل خاص به.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();

دعم المتصفح

تتوفّر كلتا الميزتَين، أي ميزة "قارئون وكاتبون متعدّدون" في FileSystemSyncAccessHandle وميزة "كاتب حصري" في FileSystemWritableFileStream، اعتبارًا من الإصدار 121 من Chrome.

الدخول إلى الفترة التجريبية للمطوّر

للدخول إلى الإصدار التجريبي للمطوّرين لاختبار الميزة قبل إطلاق الإصدار 121 من Chrome، اضبط العلامة #file-system-access-locking-scheme في chrome://flags على مفعّل. سيتيح لك ذلك اختبار الميزة على جهازك.

الشكر والتقدير

تمت مراجعة هذه المقالة بواسطة داسول لي وناثان ميموت وراشيل أندرو.