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

إيريك بيدلمان

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

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

crbug.com/89271 هو إصلاح مهم لواجهة برمجة تطبيقات FileSystem، يجعل مسارات 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">) لأنّه سيتم حله بشكل صحيح إلى أصل نظام الملفات.

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