שיפורי 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": זוהי ברירת המחדל הנוכחית. לכל מחבר שנוצר יהיה קובץ החלפה משלו.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();

תמיכה בדפדפנים

שתי התכונות האלה – מספר קוראים וכותבים ב-FileSystemSyncAccessHandle וכותב בלעדי ב-FileSystemWritableFileStream – נתמכות החל מגרסה 121 של Chrome.

כניסה לתקופת הניסיון של המפתח

כדי להיכנס לתקופת הניסיון למפתחים ולבדוק את התכונה לפני השקת Chrome 121, מגדירים את הדגל #file-system-access-locking-scheme בקובץ chrome://flags ל-Enabled. כך תוכלו לבדוק את התכונה באופן מקומי במחשב.

אישורים

הבדיקה של המאמר בוצעה על ידי Daseul Lee,‏ Nathan Memmott ו-Rachel Andrew.