בואו נאמת, 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">
), כי הם יטופלו כמו שצריך במקור של מערכת הקבצים.
בזכות התכונה הזו, קשה מאוד למשוך דף למטה ולשמור את כל המשאבים שלו במצב אופליין, ועדיין לשמור על אותו מבנה תיקייה בדיוק כמו בגרסה אונליין.