לאור כל העבודה שעשינו מחוץ ל-window
, יכול להיות שלדעתכם אפשר לגשת לCache
מכונות רק בהיקף של קובץ השירות (service worker). העובדה היא שיש לך גישה למכונות Cache
גם בהיקף של קובץ השירות (service worker) וגם בקוד המסורתי של אפליקציית האינטרנט שלך, שפועלים במסגרת window
. כך קל יותר למשתמש לבצע אינטראקציה ישירה עם מטמון של קובץ שירות (service worker), או לעדכן את ממשק המשתמש על בסיס מצב המטמון.
אחד מתרחישי השימוש האפשריים הוא להציע את התכונה 'שמירה במצב אופליין' לדפים שהמשתמש ירצה לקרוא מאוחר יותר, אבל באותו זמן הם יוכלו לדעת שהם במצב אופליין. בהטמעה של Glitch שבהמשך אפשר לראות איך לעשות זאת באמצעות תיבת עבודה.
בהטמעה שלמעלה, ניתן לראות שהסקריפט app.js
כותב למטמון אופליין מהקשר window
כאשר לוחצים על הלחצן 'שמירה למצב אופליין'. ב-Service Worker, הנכסים הסטטיים של הדף נשמרים מראש לצורך גישה אופליין. המערכת משתמשת באסטרטגיית NetworkOnly
עם handler מיוחד שמנהל את הגישה אופליין לדפים שנשמרו במטמון, ומועבר אל NavigationRoute
.
כדי לבדוק את הפונקציונליות בהטמעה של Glitch, יש לבצע את הפעולות הבאות:
- פותחים חלון דפדפן חדש ועוברים לכתובת https://save-for-offline-test.glitch.me/
- לוחצים על הלחצן עם הכיתוב הוספה לרשימת הקריאה במצב אופליין.
- פותחים את הכלים למפתחים בדפדפן Firefox או Chrome. אם משתמשים ב-Chrome, עוברים לחלונית של האפליקציה. ב-Firefox, נכנסים לחלונית האחסון.
- בכלים למפתחים בכל אחד מהדפדפנים, יופיע פריט אחסון במטמון בחלונית הימנית. יש ללחוץ כדי להרחיב אותה. ברשומת offline-cache, אתם אמורים לראות את כתובת ה-URL של הדף שהוספתם עכשיו בחלונית הימנית.
- לוחצים על קישור אחר כלשהו בחלק התחתון של הדף.
- יש להחליף מצב אופליין בכל אחד מהדפדפנים כדי לדמות חיבור במצב אופליין.
- לוחצים על הקישור לדף שהוספתם למטמון אופליין. היא אמורה להופיע גם במצב אופליין.
- לוחצים על קישור לדף שלא הוספתם למטמון אופליין. הבקשה תיכשל.
זהו לא התרחיש לדוגמה היחיד לעבודה עם מכונות Cache
ב-window
. לדוגמה, אתם יכולים לבצע שליפה מראש (prefetch) של נכסים באופן חזוי ולשמור במטמון שאתם יודעים שהמשתמש יצטרך כדי לבצע פעולה ספציפית. כך תקצר את זמן האחזור להורדת הנכסים האלה לפי דרישה, או תקצר אותם.
יש תרחישים אחרים לדוגמה שאולי יועילו לך, ומכיוון שאפשר לעבוד עם מכונות של Cache
ללא צורך ב-Service Worker, לא בטוח שיהיה צורך להתקין את כל המכונות.