بهبودهای API برای کار با فایل‌ها در مرورگر

پشتیبانی از چندین خواننده و نویسنده برای FileSystemSyncAccessHandle و نویسنده انحصاری برای FileSystemWritableFileStream.

چندین خواننده و نویسنده برای FileSystemSyncAccessHandle

سیستم فایل خصوصی مبدا (گاهی اوقات به عنوان سیستم فایل سطلی نیز شناخته می شود) به توسعه دهندگان اجازه می دهد به فایل هایی دسترسی داشته باشند که برای حداکثر عملکرد خواندن و نوشتن بهینه شده اند. این از طریق اشیاء FileSystemSyncAccessHandle اتفاق می افتد. در حال حاضر، تلاش برای باز کردن چندین شی FileSystemSyncAccessHandle برای ورودی یک فایل با NoModificationAllowedError ناموفق است. از آنجایی که موارد استفاده وجود دارد که این محدودیت محدود است، Chrome 121 یک پارامتر 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 را در هر ورودی ایجاد کرد. چیزی که گم شده راهی برای ارائه گزینه ای برای یک نویسنده انحصاری است. Chrome 121 یک پارامتر mode اختیاری را به متد FileSystemAccessFileHandle.createWritable() اضافه می کند که دارای مقادیر زیر است:

  • حالت "exclusive" : فقط یک نویسنده می تواند در هر زمان وجود داشته باشد.
  • حالت "siloed" : این حالت پیش فرض فعلی است. هر نویسنده ایجاد شده فایل swap خود را خواهد داشت.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();

پشتیبانی از مرورگر

هر دو ویژگی، چندین خواننده و نویسنده برای FileSystemSyncAccessHandle و نویسنده انحصاری برای FileSystemWritableFileStream ، در Chrome 121 پشتیبانی می‌شوند.

وارد نسخه آزمایشی برنامه نویس شوید

برای ورود به نسخه آزمایشی توسعه‌دهنده برای آزمایش این ویژگی قبل از راه‌اندازی Chrome 121، پرچم #file-system-access-locking-scheme را در chrome://flags روی Enabled تنظیم کنید. این به شما امکان می دهد ویژگی را به صورت محلی روی دستگاه خود آزمایش کنید.

سپاسگزاریها

این مقاله توسط Daseul Lee , Nathan Memmott و Rachel Andrew بررسی شده است .