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

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

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

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

ציר הזמן

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

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

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

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

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

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

  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 לבין האסימון שלכם).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

אם אתם רוצים לקבל מידע נוסף על התוכניות של ספק דפדפן מסוים להסרת AppCache, מומלץ לפנות אליו.

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

‫Firefox הוציא משימוש את AppCache בגרסה 44 (ספטמבר 2015), והסיר את התמיכה בו בגרסאות הבטא ובגרסאות ה-Nightly שלו החל מספטמבר 2019.

‫Safari ב-iOS וב-macOS

‫Safari הוציא משימוש את AppCache בתחילת 2018.

Chrome ב-iOS

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

‫Android WebViews

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

מידע נוסף

ריכזנו כאן כמה מקורות מידע למפתחים שמעבירים את האפליקציות שלהם מ-AppCache ל-service workers.

מאמרים

כלים

קבלת עזרה

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

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

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

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