การรองรับผู้อ่านและผู้เขียนหลายรายสําหรับ 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();
การสนับสนุนเบราว์เซอร์
Chrome เวอร์ชัน 121 รองรับทั้ง 2 ฟีเจอร์ ได้แก่ โปรแกรมอ่านและโปรแกรมเขียนหลายรายการสำหรับ FileSystemSyncAccessHandle และโปรแกรมเขียนสำหรับ FileSystemWritableFileStream โดยเฉพาะ
เข้าสู่ช่วงทดลองใช้สำหรับนักพัฒนาแอป
หากต้องการเข้าร่วมการทดลองใช้สำหรับนักพัฒนาซอฟต์แวร์เพื่อทดสอบฟีเจอร์นี้ก่อนการเปิดตัว Chrome 121 ให้ตั้งค่า Flag #file-system-access-locking-scheme ใน chrome://flags เป็นเปิดใช้ ซึ่งจะช่วยให้คุณทดสอบฟีเจอร์นี้ในเครื่องได้
ขอขอบคุณ
บทความนี้ได้รับการตรวจสอบโดย Daseul Lee, Nathan Memmott และ Rachel Andrew
