בואו נודה בזה: AppCache הוא מעצבן ויש בו בעיות [1, 2, 3]. אחת מהמגבלות הגדולות היא העובדה שאי אפשר לשמור נכסים באופן דינמי במטמון על פי דרישה. במילים אחרות, כשמדברים על העברת אפליקציה למצב אופליין, המשמעות היא הכל או כלום. כל הפריטים במניפסט מאוחסנים במטמון מראש, או שלא מאוחסן דבר במטמון.
FileSystem API של HTML5 הוא פתרון אטרקטיבי לבעיות של AppCache. אפשר לאחסן באופן פרוגרמטי קבצים והיררכיות של תיקיות במערכת הקבצים המקומית (בארגז חול), ולאחר מכן להוסיף, לעדכן או להסיר משאבים ספציפיים לפי הצורך. הקולגה שלי, בוריס סמס (Boris Smus), אפילו כתב ספרייה יפה לניהול סוג כזה של אחסון במטמון אופליין בהקשר של משחקים. אפשר להרחיב את אותו רעיון לכל סוג של אפליקציית אינטרנט.
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">
) כי הוא יתאים בצורה נכונה למקור במערכת הקבצים.
התכונה הזו מאפשרת לכם להוריד דף ולשמור את כל המשאבים שלו במצב אופליין, תוך שמירה על אותו מבנה תיקיות כמו בגרסה באינטרנט.