โดยค่าเริ่มต้น Chrome 85 จะนำการรองรับ AppCache ออก นักพัฒนาแอปส่วนใหญ่ควรย้ายข้อมูลออกจาก AppCache ทันที และไม่ต้องรออีกต่อไป
จากการประกาศก่อนหน้านี้ เราจะหยุดรองรับ AppCache ออกจาก Chrome และเบราว์เซอร์อื่นๆ ที่มีพื้นฐานมาจาก Chromium เราขอแนะนำให้นักพัฒนาแอปย้ายข้อมูลออกจาก AppCache ทันที แทนที่จะรอเป็นเวลานาน
Service Worker ซึ่งได้รับการสนับสนุนอย่างกว้างขวางในเบราว์เซอร์ปัจจุบัน นำเสนอทางเลือกในการมอบประสบการณ์แบบออฟไลน์ที่ AppCache มีให้ ดูกลยุทธ์การย้ายข้อมูล
ไทม์ไลน์
การเปลี่ยนแปลงล่าสุดในกำหนดการเผยแพร่ Chrome หมายความว่าระยะเวลาของขั้นตอนเหล่านี้บางขั้นตอนอาจแตกต่างกันไป เราจะพยายามอัปเดตไทม์ไลน์นี้ให้เป็นปัจจุบันอยู่เสมอ แต่ในขั้นนี้ โปรดย้ายข้อมูลออกจาก AppCache โดยเร็วที่สุด แทนที่จะรอเหตุการณ์สำคัญแบบเจาะจง
ฟีเจอร์ที่ "เลิกใช้งานแล้ว" ยังคงอยู่ แต่จะบันทึกข้อความเตือนที่ไม่สนับสนุนการใช้งาน คุณลักษณะที่ "นำออกแล้ว" ไม่มีอยู่ในเบราว์เซอร์อีกต่อไป
การเลิกใช้งานในบริบทที่ไม่ปลอดภัย | Chrome 50 (เมษายน 2016) |
การนำออกจากบริบทที่ไม่ปลอดภัย | Chrome 70 (ตุลาคม 2018) |
การเลิกใช้งานในบริบทที่ปลอดภัย | Chrome 79 (ธันวาคม 2019) |
การจำกัดขอบเขตของ AppCache | Chrome 80 (กุมภาพันธ์ 2020) |
ช่วงทดลองใช้จากต้นทาง "ย้อนกลับ" เริ่มขึ้น | Chrome 84 (กรกฎาคม 2020) |
นำออกจากบริบทที่ปลอดภัย ยกเว้นผู้ที่เลือกใช้ช่วงทดลองใช้จากต้นทาง | Chrome 85 (สิงหาคม 2020) |
นำเนื้อหาออกจากบริบทที่ปลอดภัยสำหรับทุกคนโดยสมบูรณ์ เมื่อช่วงทดลองใช้จากต้นทางเสร็จสมบูรณ์แล้ว | 5 ตุลาคม 2021 (ประมาณ Chrome 95) |
ช่วงทดลองใช้จากต้นทาง
ลำดับเวลาจะแสดงเหตุการณ์สำคัญเกี่ยวกับการนำออก 2 เหตุการณ์ ตั้งแต่ Chrome 85 เป็นต้นไป AppCache จะไม่พร้อมใช้งานใน Chrome อีกต่อไปโดยค่าเริ่มต้น นักพัฒนาแอปที่ต้องการเวลาเพิ่มเติมในการย้ายข้อมูลออกจาก AppCache สามารถลงชื่อสมัครใช้ช่วงทดลองใช้จากต้นทางแบบ "ย้อนกลับ" เพื่อขยายความพร้อมใช้งานของ AppCache สำหรับเว็บแอป ช่วงทดลองใช้จากต้นทางจะเริ่มใน Chrome 84 (ก่อนการนำออกโดยค่าเริ่มต้นใน Chrome 85) และจะใช้ได้จนถึงวันที่ 5 ตุลาคม 2021 (ประมาณ Chrome 95) เมื่อถึงเวลานั้น ระบบจะนำ AppCache ออกโดยสมบูรณ์สำหรับทุกคน รวมถึงผู้ที่เคยลงชื่อสมัครใช้ช่วงทดลองใช้จากต้นทาง
วิธีเข้าร่วมช่วงทดลองใช้จากต้นทางแบบ "ย้อนกลับ"
- ขอโทเค็นสำหรับต้นทาง
- เพิ่มโทเค็นลงในหน้า HTML ซึ่งทำได้ 2 วิธีดังนี้
- เพิ่มแท็ก
origin-trial
<meta>
ในส่วนหัวของแต่ละหน้า ตัวอย่าง:<meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
- หรือกำหนดค่าเซิร์ฟเวอร์ให้แสดงผลการตอบกลับที่มีส่วนหัว HTTP ของ
Origin-Trial
ส่วนหัวการตอบกลับที่ได้ควรมีลักษณะดังนี้Origin-Trial: TOKEN_GOES_HERE
- เพิ่มแท็ก
- เพิ่มโทเค็นเดียวกันลงในไฟล์ Manifest ของ AppCache ดำเนินการนี้ผ่านช่องใหม่ในไฟล์ Manifest ด้วยรูปแบบต่อไปนี้
ORIGIN-TRIAL:
TOKEN_GOES_HERE
(ต้องขึ้นบรรทัดใหม่ระหว่าง ORIGIN-TRIAL
กับโทเค็น)
คุณดูโปรเจ็กต์ตัวอย่างที่ฝังอยู่ด้านล่างซึ่งสาธิตการเพิ่มโทเค็นช่วงทดลองใช้จากต้นทางที่ถูกต้องลงในทั้งไฟล์ index.html
และ manifest.appcache
เหตุใดจึงต้องใช้โทเค็นในหลายตำแหน่ง
คุณต้องเชื่อมโยงโทเค็นช่วงทดลองใช้จากต้นทางเดียวกันกับรายการต่อไปนี้
- หน้า HTML ทั้งหมดที่ใช้ AppCache
- ไฟล์ Manifest ของ AppCache ทั้งหมดผ่านช่องไฟล์ Manifest
ORIGIN-TRIAL
หากเคยเข้าร่วมช่วงทดลองใช้จากต้นทางมาก่อน คุณอาจเพิ่มโทเค็นลงในหน้า HTML เท่านั้น ช่วงทดลองใช้จากต้นทางแบบ "ย้อนกลับ" ของ AppCache มีความพิเศษตรงที่คุณต้องเชื่อมโยงโทเค็นกับไฟล์ Manifest ของ AppCache แต่ละรายการด้วย
การเพิ่มโทเค็นช่วงทดลองใช้จากต้นทางลงในหน้า HTML จะเปิดใช้อินเทอร์เฟซ window.applicationCache
จากภายในเว็บแอป หน้าที่ไม่ได้เชื่อมโยงกับโทเค็นจะใช้เมธอดและเหตุการณ์ window.applicationCache
ไม่ได้ นอกจากนี้ หน้าที่ไม่มีโทเค็นจะไม่สามารถโหลดทรัพยากรจาก AppCache ได้ และ Chrome 85 เป็นต้นไปจะทำงานเสมือนว่าไม่มี AppCache อยู่
การเพิ่มโทเค็นช่วงทดลองใช้จากต้นทางลงในไฟล์ Manifest ของ AppCache เป็นการระบุว่าไฟล์ Manifest แต่ละรายการยังใช้งานได้ ตั้งแต่ Chrome 85 เป็นต้นไป ระบบจะถือว่าไฟล์ Manifest ที่ไม่มีช่อง ORIGIN-TRIAL
มีรูปแบบไม่ถูกต้อง และจะไม่สนใจกฎภายในไฟล์ Manifest
ระยะเวลาการติดตั้งใช้งานและโลจิสติกส์จากช่วงทดลองใช้จากต้นทาง
แม้ว่าช่วงทดลองใช้จากต้นทาง "แบบย้อนกลับ" จะเริ่มต้นอย่างเป็นทางการด้วย Chrome 84 แต่คุณก็ลงชื่อสมัครใช้ช่วงทดลองใช้จากต้นทางได้วันนี้ และเพิ่มโทเค็นในไฟล์ Manifest แบบ HTML และ AppCache ขณะที่กลุ่มเป้าหมายของเว็บแอปค่อยๆ อัปเกรดเป็น Chrome 84 โทเค็นที่คุณเพิ่มไว้แล้วจะมีผล
เมื่อเพิ่มโทเค็นไปยังไฟล์ Manifest ของ AppCache แล้ว ให้ไปที่ about://appcache-internals
เพื่อยืนยันว่าอินสแตนซ์ของ Chrome ในเครื่อง (เวอร์ชัน 84 ขึ้นไป) เชื่อมโยงโทเค็นช่วงทดลองใช้จากต้นทางกับรายการที่แคชไว้ของไฟล์ Manifest อย่างถูกต้อง หากระบบรู้จักช่วงทดลองใช้จากต้นทาง คุณควรจะเห็นช่องที่มี Token Expires: Tue Apr 06 2021...
ในหน้านั้นซึ่งเชื่อมโยงกับไฟล์ Manifest ดังนี้
![about://appcache-internals แสดงโทเค็นที่รู้จัก](https://web.dev/static/articles/appcache-removal/image/aboutappcache-internal-70aedc3c15663.jpg?authuser=5&hl=th)
การทดสอบก่อนนำออก
เราขอแนะนำอย่างยิ่งให้คุณย้ายข้อมูลออกจาก AppCache โดยเร็วที่สุด หากต้องการทดสอบการนำ AppCache ออกจากเว็บแอป ให้ใช้ธง about://flags/#app-cache
เพื่อจำลองการนำออก ธงนี้พร้อมให้ใช้งานตั้งแต่ Chrome 84 เป็นต้นไป
กลยุทธ์การย้ายข้อมูล
โปรแกรมทำงานของบริการที่รองรับในเบราว์เซอร์ปัจจุบันอย่างกว้างขวาง นำเสนอทางเลือกประสบการณ์แบบออฟไลน์ที่ AppCache มีให้
เราได้จัดเตรียม polyfill ที่ใช้ Service Worker เพื่อจำลองฟังก์ชันการทำงานบางอย่างของ AppCache แต่ไม่ได้จำลองทั้งอินเทอร์เฟซ AppCache กล่าวคือ ไม่มีการแทนที่อินเทอร์เฟซ window.applicationCache
หรือเหตุการณ์ AppCache ที่เกี่ยวข้อง
สำหรับกรณีปัญหาที่ซับซ้อนยิ่งขึ้น ไลบรารี เช่น Workbox จะช่วยให้คุณสร้าง Service Worker ที่ทันสมัยให้กับเว็บแอปได้ง่ายๆ
Service Worker และ AppCache จะใช้ร่วมกันไม่ได้
ในขณะใช้กลยุทธ์การย้ายข้อมูล โปรดทราบว่า Chrome จะปิดใช้ฟังก์ชัน AppCache ในหน้าเว็บที่โหลดภายใต้การควบคุมของ Service Worker กล่าวคือ ทันทีที่ติดตั้งใช้งาน Service Worker ที่ควบคุมหน้าเว็บหนึ่งๆ คุณจะใช้ AppCache ในหน้าเว็บนั้นไม่ได้
ด้วยเหตุนี้ เราจึงขอแนะนำว่าคุณไม่ควรพยายามย้ายข้อมูลไปยังโปรแกรมทำงานของบริการทีละส่วน การใช้ 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 ปัจจุบันแอป iOS ที่ใช้ WKWebView ไม่รองรับโปรแกรมทำงานของบริการ และประกาศการนำ AppCache ของ Chrome ออกไม่ครอบคลุมความพร้อมใช้งานของ AppCache ใน Chrome สำหรับ iOS โปรดคำนึงถึงเรื่องนี้หากคุณทราบว่าเว็บแอปของคุณมีผู้ชม Chrome สำหรับ iOS จำนวนมาก
Android WebView
นักพัฒนาแอปพลิเคชัน Android บางรายใช้ WebView ของ Chrome เพื่อแสดงเนื้อหาเว็บ และอาจใช้ AppCache ด้วย อย่างไรก็ตาม คุณจะเปิดใช้ช่วงทดลองใช้จากต้นทางสำหรับ WebView ไม่ได้ ด้วยเหตุนี้ Chrome WebView จะรองรับ AppCache โดยไม่มีช่วงทดลองใช้จากต้นทาง จนกว่าจะมีการนำออกขั้นสุดท้าย ซึ่งคาดว่าจะเกิดขึ้นใน Chrome 90
ดูข้อมูลเพิ่มเติม
ต่อไปนี้เป็นแหล่งข้อมูลบางส่วนสำหรับนักพัฒนาซอฟต์แวร์ที่ย้ายข้อมูลจาก AppCache ไปยังโปรแกรมทำงานของบริการ
บทความ
- Service Worker: บทนำ
- วงจรการทำงานของ Service Worker
- การฝึกอบรม Progressive Web App
- ความเสถียรของเครือข่าย
เครื่องมือ
การขอความช่วยเหลือ
หากพบปัญหาในการใช้เครื่องมือใดเครื่องมือหนึ่ง ให้เปิดปัญหาในที่เก็บ GitHub ของเครื่องมือนั้นๆ
คุณถามคำถามทั่วไปเกี่ยวกับการย้ายข้อมูลออกจาก AppCache ได้ใน Stack Overflow โดยใช้แท็ก html5-appcache
หากคุณพบข้อบกพร่องที่เกี่ยวข้องกับการนำ AppCache ของ Chrome ออก โปรดรายงานข้อบกพร่องโดยใช้เครื่องมือติดตามปัญหาของ Chromium
รูปภาพหลักอิงจาก Smithsonian Institution Archives, Acc. 11-007, Box 020, หมายเลขรูปภาพ MNH-4477