การรองรับผู้อ่านและผู้เขียนหลายรายสําหรับ 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