ब्राउज़र में फ़ाइलों के साथ काम करने के लिए API सुधार

FileSystemSyncAccessHandle के लिए, कई रीडर और राइटर के साथ-साथ FileSystemWritableFileStream के लिए, एक्सक्लूज़िव राइटर की सुविधा.

FileSystemSyncAccessHandle के लिए, एक से ज़्यादा रीडर और लेखक

ऑरिजिन प्राइवेट फ़ाइल सिस्टम (जिसे कभी-कभी बकेट फ़ाइल सिस्टम भी कहा जाता है) की मदद से, डेवलपर ऐसी फ़ाइलों को ऐक्सेस कर सकते हैं जिन्हें पढ़ने और लिखने की परफ़ॉर्मेंस को बेहतर बनाने के लिए ऑप्टिमाइज़ किया गया है. ऐसा FileSystemSyncAccessHandle ऑब्जेक्ट की मदद से होता है. फ़िलहाल, एक ही फ़ाइल एंट्री के लिए कई FileSystemSyncAccessHandle ऑब्जेक्ट खोलने की कोशिश करने पर, NoModificationAllowedError दिखता है. हालांकि, कुछ मामलों में इस पाबंदी की वजह से समस्याएं आ रही हैं. इसलिए, Chrome 121 में FileSystemFileHandle.createSyncAccessHandle() तरीके के लिए एक नया mode पैरामीटर जोड़ा गया है. इस पैरामीटर के लिए, नीचे दी गई स्ट्रिंग वैल्यू इस्तेमाल की जा सकती हैं:

  • "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, FileSystemAccessFileHandle.createWritable() तरीके में एक वैकल्पिक mode पैरामीटर जोड़ता है. इस पैरामीटर की ये वैल्यू होती हैं:

  • "exclusive" मोड: एक बार में सिर्फ़ एक लेखक मौजूद हो सकता है.
  • "siloed" मोड: यह मौजूदा डिफ़ॉल्ट मोड है. हर बनाए गए लेखक की अपनी स्वैप फ़ाइल होगी.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();

ब्राउज़र समर्थन

Chrome 121 से, FileSystemSyncAccessHandle के लिए एक से ज़्यादा रीडर और राइटर की सुविधा के साथ-साथ, FileSystemWritableFileStream के लिए खास राइटर की सुविधा भी काम करती है.

डेवलपर के लिए उपलब्ध ट्रायल वर्शन में शामिल होना

Chrome 121 के लॉन्च से पहले, इस सुविधा को टेस्ट करने के लिए डेवलपर ट्रायल में शामिल हों. इसके लिए, chrome://flags में #file-system-access-locking-scheme फ़्लैग को चालू है पर सेट करें. इससे, आपको अपनी मशीन पर स्थानीय तौर पर इस सुविधा को टेस्ट करने की सुविधा मिलेगी.

आभार

इस लेख की समीक्षा दासेल ली, नाथन मेमॉट, और रेचेल एंड्रयू ने की.