שיפורי 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();

תמיכת דפדפן

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

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

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

אישורים

המאמר הזה נכתב על ידי Daseul Lee, Nathan Memmott, ו-Rachel Andrew.