กำลังเตรียมการนำ AppCache ออก

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 ออกโดยสมบูรณ์สำหรับทุกคน รวมถึงผู้ที่ลงชื่อสมัครใช้ช่วงทดลองใช้จากต้นทาง

หากต้องการเข้าร่วมใน "การย้อนกลับ" ช่วงทดลองใช้จากต้นทาง:

  1. ขอโทเค็นสำหรับต้นทาง
  2. เพิ่มโทเค็นลงในหน้า HTML มี2 วิธีในการดำเนินการดังกล่าว ได้แก่
    • เพิ่มแท็ก origin-trial <meta> ที่ส่วนหัวของแต่ละหน้า เช่น <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
    • หรือกำหนดค่าเซิร์ฟเวอร์ให้แสดงการตอบกลับที่มีส่วนหัว HTTP ของ Origin-Trial ส่วนหัวการตอบกลับที่ได้ควรมีลักษณะดังนี้ Origin-Trial: TOKEN_GOES_HERE
  3. เพิ่มโทเค็นเดียวกันลงในไฟล์ 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 ที่แสดงโทเค็นที่รู้จัก

การทดสอบก่อนที่จะนำออก

เราขอแนะนำให้คุณย้ายข้อมูลออกจาก 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

บทความ

เครื่องมือ

การขอความช่วยเหลือ

หากพบปัญหาเมื่อใช้เครื่องมือใดเครื่องมือหนึ่ง ให้เปิดปัญหาในที่เก็บ GitHub ของเครื่องมือดังกล่าว

คุณถามคำถามทั่วไปเกี่ยวกับการย้ายข้อมูลออกจาก AppCache ได้ใน Stack Overflow โดยใช้แท็ก html5-appcache

หากคุณพบข้อบกพร่องที่เกี่ยวข้องกับการนำ AppCache ของ Chrome ออก โปรดรายงานโดยใช้เครื่องมือติดตามปัญหาของ Chromium

รูปภาพหลักอิงจากเอกสารสำคัญสถาบันสมิธโซเนียน (Smithsonian Institution Archives, Acc. 11-007, Box 020, หมายเลขรูปภาพ MNH-4477