لنواجه الأمر، ذاكرة AppCache مزعجة وتواجه مشاكل [1 و2 و3]. ومن بين القيود الكبيرة، استحالة تخزين مواد العرض مؤقتًا بشكل ديناميكي عند الطلب. وهذا يعني أنّه لا يمكن استخدام التطبيق إلا على الإنترنت أو بلا إنترنت. يتم تخزين كل المحتوى في البيان مسبقًا في ذاكرة التخزين المؤقت، أو لا يتم تخزين أي محتوى في ذاكرة التخزين المؤقت.
تصبح واجهة برمجة التطبيقات FileSystem API في HTML5 حلاً جذابًا لمعالجة أوجه القصور في 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">
) لأنّه سيتم حلّه بشكل صحيح إلى مصدر نظام الملفات.
تسهّل هذه الميزة تنزيل صفحة وحفظ جميع مواردها بلا إنترنت، مع الحفاظ على بنية المجلدات نفسها تمامًا مثل النسخة على الإنترنت.