การปรับปรุง API สำหรับการทำงานกับไฟล์ในเบราว์เซอร์

การรองรับผู้อ่านและผู้เขียนหลายรายสําหรับ FileSystemSyncAccessHandle และผู้เขียนแบบผูกขาดสําหรับ FileSystemWritableFileStream

ผู้อ่านและผู้เขียนหลายคนสำหรับ FileSystemSyncAccessHandle

ระบบไฟล์ส่วนตัวต้นทาง (บางครั้งเรียกว่าระบบไฟล์ที่เก็บข้อมูล) ช่วยให้นักพัฒนาแอปเข้าถึงไฟล์ที่ได้รับการเพิ่มประสิทธิภาพเพื่อการอ่านและเขียนที่มีประสิทธิภาพสูงสุด ซึ่งเกิดขึ้นผ่านออบเจ็กต์ FileSystemSyncAccessHandle ปัจจุบัน การพยายามเปิดออบเจ็กต์ FileSystemSyncAccessHandle หลายรายการสำหรับรายการไฟล์เดียวกันจะดำเนินการไม่สำเร็จพร้อมแสดง NoModificationAllowedError เนื่องจากมีกรณีการใช้งานที่ข้อจำกัดนี้จำกัด Chrome 121 จึงแนะนำพารามิเตอร์ mode ใหม่สำหรับเมธอด FileSystemFileHandle.createSyncAccessHandle() ด้วยค่าสตริงที่อนุญาตต่อไปนี้

  • "readwrite": นี่คือค่าเริ่มต้นในปัจจุบัน เมื่อเปิดแล้ว ระบบจะอนุญาตวิธีการใดก็ได้ใน FileSystemSyncAccessHandle อนุญาตให้มี FileSystemSyncAccessHandle เพียง 1 อินสแตนซ์เท่านั้น
  • "read-only" : อนุญาตให้มีผู้อ่านหลายคน เมื่อเปิดแล้ว ระบบจะอนุญาตเฉพาะเมธอดที่คล้ายกับการอ่านใน FileSystemSyncAccessHandle ได้แก่ read(), getSize() และ close() คุณสามารถสร้าง FileSystemSyncAccessHandle หลายอินสแตนซ์ได้ ตราบใดที่อินสแตนซ์ทั้งหมดอยู่ในโหมดอ่านอย่างเดียว
  • "readwrite-unsafe": อนุญาตให้มีผู้เขียนหลายคน เมื่อเปิดแล้ว ระบบจะอนุญาตวิธีการใดก็ได้ใน FileSystemSyncAccessHandle คุณสามารถสร้างอินสแตนซ์ FileSystemSyncAccessHandle หลายรายการได้ ตราบใดที่อินสแตนซ์ทั้งหมดอยู่ในโหมดไม่ปลอดภัยแบบอ่าน/เขียน

ลักษณะการทำงานปัจจุบันจะยังคงอยู่โดยให้ตัวเลือก "readwrite" เป็นค่าเริ่มต้น ซึ่งจะอนุญาตอินสแตนซ์ได้ครั้งละ 1 รายการเท่านั้น หากเว็บไซต์ต้องเปิดออบเจ็กต์ 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 โดยเฉพาะ

คุณสามารถสร้าง FileSystemWritableFileStream หลายรายการต่อรายการไฟล์ได้ในปัจจุบัน ซึ่งแตกต่างจาก FileSystemSyncAccessHandle สิ่งที่ขาดหายไปคือตัวเลือกสำหรับนักแต่งเพลงคนเดียว Chrome 121 เพิ่มพารามิเตอร์ mode ที่ไม่บังคับลงในเมธอด FileSystemAccessFileHandle.createWritable() ซึ่งมีค่าต่อไปนี้

  • โหมด "exclusive": มีผู้เขียนได้เพียงคนเดียวในแต่ละครั้ง
  • โหมด "siloed": โหมดนี้เป็นค่าเริ่มต้นในปัจจุบัน ผู้แต่งแต่ละคนที่สร้างขึ้นจะมีไฟล์การสลับของตนเอง
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();

การสนับสนุนเบราว์เซอร์

รองรับทั้งฟีเจอร์ผู้อ่านและผู้เขียนหลายคนสำหรับ FileSystemSyncAccessHandle รวมถึงผู้เขียนสุดพิเศษสำหรับ FileSystemWritableFileStream ตั้งแต่ Chrome 121 เป็นต้นไป

เข้าสู่ช่วงทดลองใช้สำหรับนักพัฒนาซอฟต์แวร์

หากต้องการเข้าร่วมการทดลองใช้สำหรับนักพัฒนาซอฟต์แวร์เพื่อทดสอบฟีเจอร์นี้ก่อนการเปิดตัว Chrome 121 ให้ตั้งค่า Flag #file-system-access-locking-scheme ใน chrome://flags เป็นเปิดใช้ วิธีนี้ช่วยให้คุณทดสอบฟีเจอร์นี้ในเครื่องของคุณได้

ขอขอบคุณ

บทความนี้ได้รับการตรวจสอบโดย Daseul Lee, Nathan Memmott และ Rachel Andrew