กำลังเตรียมการนำ 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 flag เพื่อจำลองการนำออก Flag นี้ใช้ได้กับ 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 นั้น ตราบใดที่มี Service Worker ที่ลงทะเบียนอยู่ในขอบเขตของหน้าหนึ่งๆ ระบบจะไม่ใช้ AppCache

เรื่องราวข้ามแพลตฟอร์ม

เราขอแนะนำให้คุณติดต่อผู้จำหน่ายเบราว์เซอร์ที่ต้องการหากต้องการข้อมูลเพิ่มเติมเกี่ยวกับแผนการนำ 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 บางรายใช้ WebView ของ Chrome เพื่อแสดงเนื้อหาเว็บ และอาจใช้ 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