إيقاف صفحة كاملة بلا إنترنت باستخدام واجهة برمجة التطبيقات FileSystem في HTML5

في الواقع، هناك أداة Appcache مزعجة وتضم مشاكل [1 و2 و3]. يتمثّل أحد القيود الرئيسية في أنّه من المستحيل تخزين مواد العرض بشكل ديناميكي عند الطلب. وتجعل هذه الإجراءات عملية إزالة التطبيق بلا اتصال بالإنترنت أمرًا لا حصر له. إما أنه تم تخزين كل شيء في البيان مؤقتًا مقدمًا أو لم يتم تخزين أي شيء مؤقتًا.

تصبح واجهة برمجة التطبيقات HTML5 FileSystem API حلاً جذابًا لأوجه القصور في Appcache. يمكن للمرء تخزين الملفات والتسلسلات الهرمية للمجلدات آليًا في نظام الملفات المحلي (وضع الحماية)، وبالتالي إضافة/تحديث/إزالة موارد فردية حسب الضرورة. حتى أنّ زميلي "بوريس سموس" كتب مكتبة رائعة لإدارة هذا النوع من التخزين المؤقت بلا إنترنت في سياق الألعاب. يمكن استقراء الفكرة نفسها للعمل مع أي نوع من تطبيقات الويب.

يشكّل الملف crbug.com/89271 إصلاحًا مهمًا لواجهة FileSystem API التي تجعل مسارات filesystem: URL النسبية تعمل على نحو رائع.

لنفترض على سبيل المثال، حفظتُ index.html في المجلد الجذر لنظام الملفات (fs.root) وأنشأت مجلد img وحفظت فيه "test.png". وسيكون عنوان URL filesystem: لهذين الملفين هو filesystem:http://example.com/temporary/index.html وfilesystem:http://example.com/temporary/img/test.png، على التوالي. وبالتالي، إذا أردت استخدام "test.png" مع img.src، يجب استخدام المسار المطلق الكامل: <img src="filesystem:http://example.com/temporary/img/test.png">. ويعني ذلك إعادة كتابة جميع عناوين URL النسبية في index.html للإشارة إلى عنوان URL الخاص بالملف ذي الصلة filesystem:. ليس رائعًا! ومن خلال إصلاح الخطأ هذا، يمكنني الآن الاحتفاظ بالمسار النسبي للملف (<img src="img/test.png">) لأنّه سيتحول إلى أصل نظام الملف بشكلٍ صحيح.

تجعل هذه الميزة من السهل سحب صفحة وحفظ جميع مواردها بلا اتصال بالإنترنت، مع الحفاظ على بنية المجلد نفسها، مثل النسخة الإلكترونية.