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=9&hl=th)
การทดสอบก่อนที่จะนำออก
เราขอแนะนำให้คุณย้ายข้อมูลออกจาก AppCache โดยเร็วที่สุด หากต้องการทดสอบการนำ AppCache ออกจากเว็บแอป ให้ใช้การแจ้งของ about://flags/#app-cache
เพื่อจำลองการนำออก แฟล็กนี้พร้อมใช้งานใน Chrome 84 เป็นต้นไป
กลยุทธ์การย้ายข้อมูล
Service Worker ซึ่งรองรับในเบราว์เซอร์ปัจจุบันอย่างกว้างขวาง นำเสนอทางเลือกแทนประสบการณ์แบบออฟไลน์ที่ AppCache มีให้
เราได้จัดเตรียม polyfill ที่ใช้ Service Worker เพื่อจำลองฟังก์ชันการทำงานบางอย่างของ AppCache แม้ว่าจะไม่มีการจำลองอินเทอร์เฟซ AppCache ทั้งหมด โดยเฉพาะอย่างยิ่ง ไม่มีการแทนที่อินเทอร์เฟซ window.applicationCache
หรือเหตุการณ์ AppCache ที่เกี่ยวข้อง
สำหรับกรณีที่ซับซ้อนมากขึ้น ไลบรารีต่างๆ เช่น Workbox จะมอบวิธีง่ายๆ ในการสร้าง Service Worker ที่ทันสมัยสำหรับเว็บแอปของคุณ
Service Worker และ AppCache ไม่เกี่ยวข้องกัน
ขณะที่คุณกำลังปรับกลยุทธ์การย้ายข้อมูล โปรดทราบว่า Chrome จะปิดใช้ฟังก์ชัน AppCache บนหน้าเว็บที่โหลดภายใต้การควบคุมของ Service Worker กล่าวคือ ทันทีที่คุณทำให้ Service Worker ที่ควบคุมหน้าเว็บนั้นๆ ใช้งานได้ คุณจะใช้ AppCache ในหน้านั้นไม่ได้อีกต่อไป
ด้วยเหตุนี้ เราขอแนะนำว่าอย่าพยายามย้ายข้อมูลไปยัง Service Worker ทีละรายการ การปรับใช้ Service Worker ที่มีตรรกะการแคชเพียงบางส่วนถือเป็นความผิดพลาด คุณไม่สามารถกลับไปใช้ AppCache เพื่อ "เติมเต็มช่องว่าง"
ในทำนองเดียวกัน หากคุณทำให้ Service Worker ใช้งานได้ก่อนที่จะมีการนำ AppCache ออก แล้วพบว่าคุณต้องย้อนกลับไปใช้ AppCache ก่อนหน้า คุณจะต้องยกเลิกการลงทะเบียน Service Worker นั้น จะไม่มีการใช้ AppCache ตราบใดที่มี Service Worker ที่ลงทะเบียนอยู่ในขอบเขตของหน้านั้น
เรื่องราวข้ามแพลตฟอร์ม
เราขอแนะนำให้คุณติดต่อผู้ให้บริการเบราว์เซอร์รายใดรายหนึ่งหากต้องการข้อมูลเพิ่มเติมเกี่ยวกับแผนการนำ AppCache ออก
Firefox ในทุกแพลตฟอร์ม
Firefox ได้เลิกใช้งาน AppCache รุ่น 44 (กันยายน 2015) และยกเลิกการรองรับ AppCache ในเวอร์ชันเบต้าและ 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 บางรายใช้ Chrome WebView เพื่อแสดงเนื้อหาเว็บและอาจใช้ 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