מתכוננים להסרה של מטמון האפליקציה

Chrome 85 מסיר את התמיכה ב-AppCache כברירת מחדל. רוב המפתחים צריכים לעבור ממטמון האפליקציה כבר עכשיו ולא להמתין יותר.

בהמשך להודעות הקודמות, התמיכה ב-AppCache תופסק מ-Chrome ומדפדפנים אחרים המבוססים על Chromium. אנחנו ממליצים למפתחים לעבור ממטמון האפליקציה כבר עכשיו, במקום להמתין עוד.

Service Worker שנתמכים באופן נרחב בדפדפנים קיימים, מציעים חלופה לאספקה של חוויית השימוש של Appcache. אפשר לקרוא על אסטרטגיות העברה.

ציר הזמן

המשמעות של שינויים אחרונים בלוח הזמנים של השקת הגרסאות של Chrome היא שהתזמון של חלק מהשלבים האלה עשוי להשתנות. אנחנו ננסה לשמור על עדכניות ציר הזמן הזה, אבל בשלב הזה מומלץ לבצע העברה מ-AppCache בהקדם האפשרי, במקום להמתין לאבני דרך ספציפיות.

A 'הוצא משימוש' אבל התכונה עדיין קיימת, אבל מתעדת הודעות אזהרה שמעודדות את השימוש בתכונה. פעולה 'הוסרה' שהפיצ'ר כבר לא קיים בדפדפן.

הוצאה משימוש בהקשרים לא מאובטחים Chrome 50 (אפריל 2016)
הסרה מהקשרים לא מאובטחים Chrome 70 (אוקטובר 2018)
הוצאה משימוש בהקשרים מאובטחים Chrome 79 (דצמבר 2019)
הגבלת ההיקף של AppCache Chrome 80 (פברואר 2020)
"Reverse" תקופת המקור לניסיון מתחילה Chrome 84 (יולי 2020)
הסרה מהקשרים מאובטחים, למעט אלה שהביעו הסכמה לגרסת המקור לניסיון Chrome 85 (אוגוסט 2020)
הסרה מלאה מההקשרים המאובטחים לכולם, עם השלמת תקופת הניסיון של המקור 5 באוקטובר 2021 (בסביבות Chrome 95)

גרסת מקור לניסיון

בציר הזמן מפורטות שתי אבני דרך קרובות להסרה. החל מגרסה 85 של Chrome, מטמון האפליקציה לא יהיה זמין יותר ב-Chrome כברירת מחדל. מפתחים שנדרש להם זמן נוסף כדי להעביר ממטמון האפליקציה יכולים להירשם ל'היפוך' גרסת המקור לניסיון כדי להרחיב את הזמינות של AppCache לאפליקציות האינטרנט שלהם. גרסת המקור לניסיון תתחיל בגרסה 84 של Chrome (לפני הסרת ברירת המחדל מ-Chrome 85), ותמשיך להיות פעילה עד 5 באוקטובר 2021 (בסביבות Chrome 95). בשלב הזה, AppCache יוסר באופן מלא לכולם, גם אלה שנרשמו לגרסת המקור לניסיון.

כדי להשתתף בניסוי ההפוך גרסת המקור לניסיון:

  1. מבקשים אסימון למקור.
  2. מוסיפים את האסימון לדפי ה-HTML. ניתן לעשות זאת בשתי דרכים:
    • מוסיפים תג origin-trial <meta> בחלק העליון של כל דף. לדוגמה: <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
    • לחלופין, מגדירים את השרת כך שיחזיר תשובות שמכילות את כותרת ה-HTTP Origin-Trial. כותרת התשובה שמתקבלת אמורה להיראות בערך כך: Origin-Trial: TOKEN_GOES_HERE
  3. צריך להוסיף את אותו אסימון למניפסטים של AppCache. עושים זאת באמצעות שדה חדש במניפסט, בפורמט:
ORIGIN-TRIAL:
TOKEN_GOES_HERE

(צריכה להיות שורה חדשה בין ORIGIN-TRIAL לבין האסימון שלך.)

בהמשך אפשר לראות פרויקט לדוגמה שמדגים הוספת האסימונים הנכונים של גרסת המקור לניסיון, גם לקובץ index.html וגם לקובץ manifest.appcache.

למה צריך אסימונים בכמה מקומות?

צריך לשייך את אותו אסימון מקור לניסיון אל:

  • כל דפי ה-HTML שנעשה בהם שימוש ב-Appcache.
  • כל המניפסטים של AppCache דרך שדה המניפסט ORIGIN-TRIAL.

אם השתתפתם בעבר בניסויי מקור, יכול להיות שהוספתם את האסימון רק לדפי ה-HTML שלכם. "היפוך" של AppCache גרסת המקור לניסיון היא מיוחדת כי צריך לשייך אסימון לכל אחד מהמניפסטים של Appcache.

הוספה של אסימון המקור לניסיון לדפי ה-HTML שלך מפעילה את הממשק של window.applicationCache מתוך אפליקציות האינטרנט שלך. דפים שלא משויכים לאסימון לא יוכלו להשתמש בשיטות ובאירועים של window.applicationCache. גם דפים שאין להם אסימון לא יוכלו לטעון משאבים מ-Appcache. החל מגרסה 85 של Chrome, הם יפעלו כאילו מטמון האפליקציה לא היה קיים.

הוספת אסימון המקור לניסיון למניפסטים של AppCache מציינת שכל מניפסט עדיין חוקי. החל מגרסה 85 של Chrome, מניפסטים שלא מכילים את השדה ORIGIN-TRIAL יטופלו כמניפסטים שגויים, והמערכת תתעלם מהכללים במניפסט.

תזמון ולוגיסטיקה של פריסת גרסת מקור

אומנם ההיפוך גרסת המקור לניסיון מתחילה באופן רשמי ב-Chrome 84. אתם יכולים להירשם לגרסת המקור לניסיון עוד היום ולהוסיף את האסימונים למניפסטים של HTML ו-AppCache. הקהל של אפליקציית האינטרנט ישודרג בהדרגה ל-Chrome 84, כך שכל האסימונים שכבר הוספת ייכנסו לתוקף.

אחרי שמוסיפים אסימון למניפסט של AppCache, צריך לעבור אל about://appcache-internals כדי לוודא שהמופע המקומי של Chrome (גרסה 84 ואילך) שייכה כראוי את אסימון המקור של תקופת הניסיון עם הרשומות במטמון של המניפסט. אם המערכת תזהה את גרסת המקור לניסיון, יופיע בדף הזה שדה עם Token Expires: Tue Apr 06 2021..., שמשויך למניפסט:

ממשק about://appcache-internals שמציג אסימון מזוהה.

בדיקה לפני ההסרה

מומלץ מאוד לבצע את המעבר מ-AppCache בהקדם האפשרי. כדי לבדוק הסרה של מטמון אפליקציה באפליקציות אינטרנט, אפשר להשתמש בדגל about://flags/#app-cache כדי לדמות את ההסרה שלה. הדגל הזה זמין החל מ-Chrome 84.

אסטרטגיות העברה

קובצי שירות (service worker) שנתמכים באופן נרחב בדפדפנים הנוכחיים מציעים חלופה לחוויית השימוש במצב אופליין שמסופקת על ידי AppCache.

יש לנו polyfill שמשתמש ב-service worker כדי לשכפל חלק מהפונקציונליות של AppCache, אבל הוא לא משכפל את ממשק AppCache כולו. באופן ספציפי, הוא לא מספק תחליף לממשק window.applicationCache או לאירועי AppCache שקשורים אליו.

במקרים מורכבים יותר, ספריות כמו Workbox מספקות דרך קלה ליצור קובץ שירות מודרני עבור אפליקציית האינטרנט.

קובצי שירות (service worker) ו-AppCache הם בלעדיים

במהלך העבודה על אסטרטגיית ההעברה, חשוב לזכור ש-Chrome ישבית את הפונקציונליות של Appcache בכל דף שנטען בשליטה של Service Worker. במילים אחרות, מיד לאחר פריסת קובץ שירות (service worker) השולט בדף מסוים, כבר לא ניתן יהיה להשתמש ב-AppCache בדף הזה.

לכן מומלץ לא לנסות להעביר את כל רכיבי השירות בנפרד. תהיה טעות בפריסה של Service Worker שמכיל רק חלק מלוגיקת השמירה במטמון. אי אפשר לחזור אחורה ב-AppCache כדי "למלא את הפערים".

באופן דומה, אם פורסים קובץ שירות (service worker) לפני הסרתו, ולאחר מכן מגלים שצריך לחזור להטמעה הקודמת של ה-Appcache, צריך לוודא שמבטלים את הרישום של ה-Service Worker. כל עוד יש קובץ שירות (service worker) רשום שנכלל בדף נתון, לא ייעשה שימוש ב-Appcache.

הסיפור בפלטפורמות שונות

אנחנו ממליצים לך לפנות לספק דפדפן ספציפי כדי לקבל מידע נוסף על התוכניות שלו להסרת Appcache.

Firefox בכל הפלטפורמות

מטמון האפליקציה של Firefox הוציא משימוש את גרסה 44 (ספטמבר 2015) של Firefox, והסירו את התמיכה בגרסת הבטא ובגרסת Nightly build שלו נכון לספטמבר 2019.

Safari ב-iOS וב-macOS

מטמון האפליקציה של Safari הוצא משימוש בתחילת 2018.

Chrome ב-iOS

השימוש ב-Chrome ל-iOS הוא מקרה מיוחד, כי הוא משתמש במנוע דפדפן שונה מזה של Chrome בפלטפורמות אחרות: WKWebView. אין כרגע תמיכה ב-Service Workers באפליקציות ל-iOS שמשתמשות ב-WKWebView. הודעת ההסרה של AppCache ב-Chrome לא כוללת מידע על הזמינות של AppCache ב-Chrome ל-iOS. כדאי לזכור זאת אם אתם יודעים שלאפליקציית האינטרנט שלכם יש קהל משמעותי של Chrome ל-iOS.

רכיבי Android WebView

חלק מהמפתחים של אפליקציות ל-Android משתמשים ב-WebView ל-Chrome כדי להציג תוכן מהאינטרנט, ויכול להיות שהם גם משתמשים במטמון האפליקציה. עם זאת, לא ניתן להפעיל גרסת מקור לניסיון של WebView. לכן, ב-Chrome WebView, יתמוך במטמון האפליקציה ללא גרסת מקור לניסיון, עד שההסרה הסופית תתבצע, צפויה ב-Chrome 90.

מידע נוסף

ריכזנו כאן כמה משאבים למפתחים שעוברים מ-Appcache ל-Service Workers.

מאמרים

כלים

קבלת עזרה

אם נתקלתם בבעיה באמצעות כלי מסוים, תוכלו לפתוח אותו במאגר שלו ב-GitHub.

אפשר לשאול שאלה כללית על העברה מ-AppCache ב-Stack Overflow באמצעות התג html5-appcache.

אם נתקלתם בבאג שקשור להסרת 'מטמון האפליקציה' ב-Chrome, דווחו על כך באמצעות המעקב אחר בעיות ב-Chromium.

תמונה ראשית המבוססת על Smithsonian Institution Archives, Acc 11-007, Box 020, Image No. MNH-4477.