เผยแพร่เมื่อวันที่ 10 สิงหาคม 2023, อัปเดตครั้งล่าสุด: 29 มิถุนายน 2026
ระบบจะค่อยๆ เลิกใช้งานเหตุการณ์ unload โดยจะค่อยๆ เปลี่ยนค่าเริ่มต้นเพื่อให้ตัวแฮนเดิล unload หยุดทำงานในหน้าเว็บ เว้นแต่หน้าเว็บจะเลือกใช้เพื่อเปิดใช้งานอีกครั้งอย่างชัดแจ้ง
ไทม์ไลน์การเลิกใช้งาน
เราสังเกตเห็นว่าลักษณะการทำงานของการยกเลิกการโหลดน่าจะมีการเปลี่ยนแปลงตั้งแต่เดือนมกราคม 2019 ซึ่งเป็นช่วงที่เราประกาศความตั้งใจที่จะใช้ Back-Forward Cache เราได้ทำการเผยแพร่ข้อมูลในวงกว้างควบคู่ไปกับการดำเนินการใช้งาน ซึ่งส่งผลให้มีการใช้งานการยกเลิกการโหลดลดลงอย่างมาก นอกจากนี้ เรายังเริ่มเสนอวิธีทดสอบผลกระทบของการเลิกใช้งานการยกเลิกการโหลดจาก Chrome 115 เพื่อเสริมการเผยแพร่ข้อมูลนี้ด้วย ดังนี้
- การทดสอบในสภาพแวดล้อมจริงโดยใช้ Permission-Policy API สำหรับการยกเลิกการโหลด ใน Chrome 115 (กรกฎาคม 2023)
- การทดสอบในเครื่องโดยการเปิดใช้แฟล็กใน Chrome 117 (กันยายน 2023)
ตลอดปี 2024 เราได้แก้ไขปัญหาหลายอย่างที่ขัดขวางการเริ่มต้นการเปิดตัว และตลอดปี 2025 เราได้เปิดตัวการเลิกใช้งานกับเว็บไซต์ 50 อันดับแรก
| Milestone | วันที่ของเหตุการณ์สำคัญ | เว็บไซต์ 50 อันดับแรก | % ของต้นทางอื่นๆ |
|---|---|---|---|
| 135 | 26 มี.ค. 2025 | 1 (www.google.com) |
0 |
| 139 | 30 ก.ค. 2025 | 5 | 0 |
| 140 | 27 ส.ค. 2025 | 10 | 0 |
| 141 | 24 ก.ย. 2025 | 25 | 0 |
| 142 | 22 ต.ค. 2025 | 50 | 0 |
ในปี 2026 เราเริ่มเปิดตัวการเลิกใช้งานนี้กับทุกต้นทาง โดยใช้เวลามากกว่า 8 Milestone (หรือประมาณ 32 สัปดาห์) ตามรายละเอียดในตารางต่อไปนี้
| Milestone | วันที่ของเหตุการณ์สำคัญ | เว็บไซต์ 50 อันดับแรก | % ของการโหลดหน้าเว็บ Chrome สำหรับเว็บไซต์ทั้งหมด |
|---|---|---|---|
| 146 | 10 มี.ค. 2026 | 50 | 1 |
| 147 | 7 เม.ย. 2026 | 50 | 5 |
| 148 | 5 พ.ค. 2026 | 50 | 10 |
| 149 | 2 มิ.ย. 2026 | 50 | 20 |
| 150 | 30 มิ.ย. 2026 | 50 | 40 |
| 151 | 28 ก.ค. 2026 | 50 | 60 |
| 152 | 25 ส.ค. 2026 | 50 | 80 |
| 153 | 22 ก.ย. 2026 | 50 | 100 |
การเปิดตัวแบบเต็มจะอิงตามการโหลดหน้าเว็บ (โดยมีความสอดคล้องกันเมื่อเวลาผ่านไป) แทนที่จะอิงตามผู้ใช้หรือเว็บไซต์แต่ละราย เพื่อหลีกเลี่ยงไม่ให้ผู้ใช้หรือเว็บไซต์บางรายได้รับผลกระทบมากกว่ารายอื่นๆ ตามที่ระบุในประกาศความตั้งใจที่จะเลิกใช้งาน
โปรดทราบว่าเรายังมีเมนูตัวเลือกการเลือกไม่ใช้ในกรณีที่ไทม์ไลน์การเลิกใช้งานนี้มีเวลาไม่เพียงพอสำหรับการย้ายข้อมูลจากการยกเลิกการโหลด
ฉากหลัง
เหตุการณ์ unload ได้รับการออกแบบมาให้ทำงานเมื่อมีการยกเลิกการโหลดเอกสาร ในทางทฤษฎีแล้ว เหตุการณ์นี้สามารถใช้เพื่อเรียกใช้โค้ดได้ทุกครั้งที่ผู้ใช้ออกจากหน้าเว็บ หรือใช้เป็นฟังก์ชันเรียกกลับเมื่อสิ้นสุดเซสชัน
สถานการณ์ที่ใช้เหตุการณ์นี้บ่อยที่สุด ได้แก่
- การบันทึกข้อมูลผู้ใช้: บันทึกข้อมูลก่อนออกจากหน้าเว็บ
- การทำงานด้านการล้างข้อมูล: ปิดแหล่งข้อมูลที่เปิดอยู่ก่อนที่จะออกจากหน้าเว็บ
- การส่งข้อมูลวิเคราะห์: ส่งข้อมูลที่เกี่ยวข้องกับการโต้ตอบของผู้ใช้เมื่อสิ้นสุดเซสชัน
อย่างไรก็ตาม เหตุการณ์ unload ไม่น่าเชื่อถืออย่างยิ่ง
ใน Chrome และ Firefox บนเดสก์ท็อป unload ค่อนข้างน่าเชื่อถือ แต่ส่งผลเสียต่อประสิทธิภาพของเว็บไซต์โดยการป้องกันการใช้งาน Back-Forward Cache (bfcache)
ในเบราว์เซอร์บนอุปกรณ์เคลื่อนที่ unload มักจะไม่ทำงานเนื่องจากมีการย้ายแท็บไปทำงานเบื้องหลังและปิดแท็บอยู่บ่อยครั้ง ด้วยเหตุนี้ เบราว์เซอร์จึงเลือกที่จะให้ความสำคัญกับ bfcache ในอุปกรณ์เคลื่อนที่มากกว่า unload ซึ่งทำให้ unload ไม่น่าเชื่อถือมากยิ่งขึ้น Safari ก็ใช้ลักษณะการทำงานนี้ในเดสก์ท็อปด้วย
ทีม Chrome เชื่อว่าการใช้โมเดลอุปกรณ์เคลื่อนที่ในการให้ความสำคัญกับ bfcache มากกว่า unload ในเดสก์ท็อป จะก่อให้เกิดการหยุดชะงักเนื่องจากจะทำให้ไม่น่าเชื่อถือมากขึ้นด้วย ทั้งที่ก่อนหน้านี้ค่อนข้างน่าเชื่อถือใน Chrome (และ Firefox) ดังนั้น Chrome จึงมีเป้าหมายที่จะนำเหตุการณ์ unload ออกไปโดยสมบูรณ์ จนกว่าจะถึงตอนนั้น `unload` จะยังคงน่าเชื่อถือใน Chrome บนเดสก์ท็อปสำหรับผู้ที่เลือกไม่ใช้การเลิกใช้งานอย่างชัดแจ้ง
เหตุใดจึงเลิกใช้งานเหตุการณ์ unload
การเลิกใช้งาน unload เป็นขั้นตอนสำคัญในการตระหนักถึงเว็บที่เราใช้งานอยู่ในปัจจุบัน เหตุการณ์ unload ให้ความรู้สึกควบคุมวงจรของแอปได้ ซึ่งไม่ตรงกับวิธีที่เราท่องเว็บในโลกคอมพิวเตอร์สมัยใหม่มากขึ้นเรื่อยๆ
ระบบปฏิบัติการบนอุปกรณ์เคลื่อนที่มักจะหยุดหรือยกเลิกการโหลดหน้าเว็บเพื่อประหยัดหน่วยความจำ และเบราว์เซอร์บนเดสก์ท็อปก็ทำเช่นนี้มากขึ้นเรื่อยๆ ด้วยเหตุผลเดียวกัน แม้ว่าจะไม่มีการแทรกแซงจากระบบปฏิบัติการ แต่ผู้ใช้เองก็มักจะสลับแท็บและปิดแท็บเก่าโดยไม่ได้ "ออกจากหน้าเว็บ" อย่างเป็นทางการ
การนำเหตุการณ์ unload ที่ล้าสมัยออกไปเป็นการตระหนักว่าเราในฐานะนักพัฒนาเว็บต้องตรวจสอบว่ากระบวนทัศน์ของเราตรงกับโลกแห่งความเป็นจริง และไม่พึ่งพาแนวคิดที่ล้าสมัยซึ่งไม่เป็นความจริงอีกต่อไป (หากเคยเป็นจริง)
ตัวเลือกแทนเหตุการณ์ unload
เราขอแนะนำให้ใช้ตัวเลือกต่อไปนี้แทน unload
visibilitychange: เพื่อกำหนดว่าการมองเห็นของหน้าเว็บมีการเปลี่ยนแปลงเมื่อใด เหตุการณ์นี้เกิดขึ้นเมื่อผู้ใช้สลับแท็บ ย่อหน้าต่างเบราว์เซอร์ หรือเปิดหน้าเว็บใหม่ พิจารณาสถานะhiddenstate เป็นเวลาที่เชื่อถือได้ล่าสุดในการบันทึกข้อมูลแอปและข้อมูลผู้ใช้pagehide: เพื่อกำหนดว่าผู้ใช้ออกจากหน้าเว็บเมื่อใด เหตุการณ์นี้เกิดขึ้นเมื่อผู้ใช้ออกจากหน้าเว็บ โหลดหน้าเว็บซ้ำ หรือปิดหน้าต่างเบราว์เซอร์ เหตุการณ์pagehideจะไม่ทำงานเมื่อมีการย่อหน้าเว็บหรือสลับไปใช้แท็บอื่น โปรดทราบว่าเนื่องจากpagehideไม่ทำให้หน้าเว็บไม่สามารถใช้ Back-Forward Cache ได้ จึงเป็นไปได้ที่จะมีการกู้คืนหน้าเว็บหลังจากเหตุการณ์นี้เริ่มทำงาน หากคุณล้างแหล่งข้อมูลใดๆ ในเหตุการณ์นี้ คุณอาจต้องกู้คืนแหล่งข้อมูลเหล่านั้นเมื่อมีการกู้คืนหน้าเว็บ
เหตุการณ์ beforeunload มีกรณีการใช้งานที่แตกต่างจาก unload เล็กน้อยตรงที่เป็นเหตุการณ์ที่ยกเลิกได้ เหตุการณ์นี้มักใช้เพื่อเตือนผู้ใช้ถึงการเปลี่ยนแปลงที่ไม่ได้บันทึกเมื่อออกจากหน้าเว็บ เหตุการณ์นี้ยังไม่น่าเชื่อถือเนื่องจากจะไม่ทำงานหากมีการปิดแท็บที่ทำงานเบื้องหลัง เราขอแนะนำให้จำกัดการใช้ beforeunload และ เพิ่มเหตุการณ์นี้แบบมีเงื่อนไขเท่านั้น แต่ให้ใช้เหตุการณ์ที่กล่าวถึงก่อนหน้านี้เพื่อแทนที่ unload ส่วนใหญ่
ดูรายละเอียดเพิ่มเติมได้ที่ คำแนะนำเกี่ยวกับการไม่ใช้ตัวแฮนเดิล unload
ตรวจหาการใช้งาน unload
มีเครื่องมือต่างๆ ที่ช่วยคุณค้นหาการปรากฏของเหตุการณ์ unload ในหน้าเว็บ ซึ่งจะช่วยให้เว็บไซต์ค้นพบว่ามีการใช้เหตุการณ์นี้หรือไม่ ไม่ว่าจะในโค้ดของตนเองหรือใช้ไลบรารี และอาจได้รับผลกระทบจากการเลิกใช้งานที่กำลังจะเกิดขึ้น
เครื่องมือสำหรับนักพัฒนาเว็บใน Chrome
เครื่องมือสำหรับนักพัฒนาเว็บใน Chrome มีการback-forward-cacheตรวจสอบเพื่อช่วยคุณระบุปัญหาที่อาจทำให้หน้าเว็บไม่สามารถใช้ Back-Forward Cache ได้ ซึ่งรวมถึงการใช้งานตัวแฮนเดิล unload
หากต้องการทดสอบ Back-Forward Cache ให้ทำตามขั้นตอนต่อไปนี้
เปิดเครื่องมือสำหรับนักพัฒนาเว็บในหน้าเว็บ แล้วไปที่แอปพลิเคชัน > บริการเบื้องหลัง > แคชย้อนหลัง
คลิกทดสอบ Back-Forward Cache Chrome จะนำคุณไปยัง
chrome://terms/และกลับไปยังหน้าเว็บโดยอัตโนมัติ หรือคุณจะคลิกปุ่มย้อนกลับและไปข้างหน้าของเบราว์เซอร์ก็ได้
หากหน้าเว็บไม่สามารถใช้ Back-Forward Cache ได้ แท็บBack-Forward Cache จะแสดงรายการปัญหา ในส่วนดำเนินการได้ คุณจะเห็นว่ามีการใช้ unload หรือไม่
Reporting API
คุณสามารถใช้ Reporting API ร่วมกับนโยบายสิทธิ์แบบอ่านอย่างเดียวเพื่อตรวจหาการใช้งาน unload จากผู้ใช้เว็บไซต์
ดูรายละเอียดเพิ่มเติมได้ที่การใช้ Reporting API เพื่อค้นหาการยกเลิกการโหลด
Bfcache notRestoredReasons API
พร็อพเพอร์ตี้ notRestoredReasons ซึ่งเพิ่มลงในคลาส PerformanceNavigationTiming จะรายงานข้อมูลว่าเอกสารถูกบล็อกไม่ให้ใช้ bfcache ในการไปยังส่วนต่างๆ หรือไม่ และเหตุใด ต่อไปนี้คือตัวอย่างลักษณะคำเตือนของออบเจ็กต์การตอบกลับเกี่ยวกับ Listener unload ที่มีอยู่
{
children: [],
id: null,
name: null,
reasons: [
{"reason", "unload-listener"}
],
src: null,
url: "https://www.example.com/page/"
}
ควบคุมการเข้าถึง unload
Chrome กำลังเลิกใช้งานเหตุการณ์ unload ทีละน้อย ในระหว่างนี้ คุณสามารถใช้เครื่องมือต่างๆ เพื่อควบคุมลักษณะการทำงานนี้และเตรียมพร้อมสำหรับการเลิกใช้งานที่กำลังจะเกิดขึ้น โปรดทราบว่าคุณไม่ควรพึ่งพาเทคนิคเหล่านี้ในระยะยาว และควรวางแผนที่จะย้ายข้อมูลไปยังตัวเลือกอื่นโดยเร็วที่สุด
ตัวเลือกต่อไปนี้ช่วยให้คุณเปิดหรือปิดใช้ตัวแฮนเดิล unload เพื่อทดสอบว่าเว็บไซต์จะทำงานอย่างไรหากไม่มีตัวแฮนเดิลเหล่านี้ เพื่อให้คุณเตรียมพร้อมสำหรับการเลิกใช้งานที่กำลังจะเกิดขึ้น นโยบายมีหลายประเภท ดังนี้
- นโยบายสิทธิ์: เป็น API ของแพลตฟอร์มสำหรับเจ้าของเว็บไซต์ในการควบคุมการเข้าถึงฟีเจอร์ต่างๆ ที่ระดับเว็บไซต์หรือระดับหน้าเว็บแต่ละหน้า โดยใช้ส่วนหัว HTTP
- นโยบาย Enterprise: เครื่องมือสำหรับผู้ดูแลระบบไอทีในการกำหนดค่า Chrome ให้กับองค์กรหรือธุรกิจ โดยสามารถกำหนดค่าได้โดยใช้แผงผู้ดูแลระบบ เช่น คอนโซลผู้ดูแลระบบของ Google
- Chrome Flag: ช่วยให้นักพัฒนาซอฟต์แวร์แต่ละรายเปลี่ยนการตั้งค่าการเลิกใช้งาน
unloadเพื่อทดสอบผลกระทบต่อเว็บไซต์ต่างๆ ได้
นโยบายสิทธิ์
เราได้เพิ่มนโยบายสิทธิ์ ตั้งแต่ Chrome 115 เพื่อให้เว็บไซต์เลือกไม่ใช้ตัวแฮนเดิล unload และได้รับประโยชน์จาก bfcache ทันทีเพื่อปรับปรุงประสิทธิภาพของเว็บไซต์ ดูตัวอย่างวิธีตั้งค่านี้สำหรับเว็บไซต์ ซึ่งจะช่วยให้เว็บไซต์เตรียมพร้อมสำหรับการเลิกใช้งาน unload ได้
เราได้ขยายฟีเจอร์นี้ใน Chrome 117 เพื่อให้เว็บไซต์ทำสิ่งที่ตรงกันข้ามได้ และเลือกที่จะพยายามเรียกใช้ตัวแฮนเดิล unload ต่อไปตามที่ทำอยู่ในปัจจุบัน เนื่องจาก Chrome จะเปลี่ยนค่าเริ่มต้นไม่ให้เรียกใช้ตัวแฮนเดิลเหล่านี้ในอนาคต ดูตัวอย่างวิธีอนุญาตให้ตัวแฮนเดิลการยกเลิกการโหลดเรียกใช้สำหรับเว็บไซต์ต่อไป แม้ว่าเราจะสนับสนุนให้เจ้าของเว็บไซต์เลิกใช้ตัวแฮนเดิล unload เนื่องจากตัวแฮนเดิลเหล่านี้ไม่น่าเชื่อถือ แต่เราวางแผนที่จะรองรับการเลือกไม่ใช้ตัวแฮนเดิลนี้ต่อไปในอนาคตอันใกล้นี้สำหรับเว็บไซต์ที่จำเป็นต้องใช้ โปรดทราบว่าการเลือกใช้ตัวแฮนเดิลอีกครั้งไม่ได้ทำให้ตัวแฮนเดิล unload น่าเชื่อถือมากขึ้นในอุปกรณ์เคลื่อนที่ แต่เพียงแค่กู้คืนสถานะปัจจุบันเท่านั้น
นโยบาย Enterprise
องค์กรที่มีซอฟต์แวร์ที่ต้องใช้เหตุการณ์ unload เพื่อให้ทำงานได้อย่างถูกต้องสามารถใช้นโยบาย ForcePermissionPolicyUnloadDefaultEnabled เพื่อป้องกันการเลิกใช้งานทีละน้อยสำหรับอุปกรณ์ที่อยู่ภายใต้การควบคุมขององค์กร การเปิดใช้นโยบายนี้จะทำให้ unload ยังคงเปิดใช้โดยค่าเริ่มต้นสำหรับทุกต้นทาง หน้าเว็บอาจยังคงตั้งค่านโยบายที่เข้มงวดมากขึ้นได้หากต้องการ เช่นเดียวกับการเลือกไม่ใช้นโยบายสิทธิ์ นโยบายนี้เป็นเครื่องมือในการลดการเปลี่ยนแปลงที่อาจทำให้เกิดปัญหา เราขอแนะนำให้เจ้าของเว็บไซต์หยุดพึ่งพาตัวแฮนเดิล unload แต่ Chrome วางแผนที่จะรองรับการเลือกไม่ใช้ระดับองค์กรนี้ต่อไปในอนาคตอันใกล้นี้สำหรับเว็บไซต์ที่จำเป็นต้องใช้
Chrome Flag และการเปลี่ยนบรรทัดคำสั่ง
นอกเหนือจากนโยบาย Enterprise แล้ว คุณยังปิดใช้การเลิกใช้งานสำหรับผู้ใช้แต่ละรายได้โดยใช้ Chrome Flag และการเปลี่ยนบรรทัดคำสั่ง
การตั้งค่า chrome://flags/#deprecate-unload เป็น enabled จะทำให้ค่าเริ่มต้นของการเลิกใช้งานเร็วขึ้นและป้องกันไม่ให้ตัวแฮนเดิล unload ทำงาน คุณยังคงลบล้างการตั้งค่านี้ได้ทีละเว็บไซต์โดยใช้นโยบายสิทธิ์ แต่ตัวแฮนเดิลจะยังคงทำงานโดยค่าเริ่มต้น
คุณยังควบคุมการตั้งค่าเหล่านี้ได้ด้วยการเปลี่ยนบรรทัดคำสั่ง command line switches
การเปรียบเทียบตัวเลือก
ตารางต่อไปนี้สรุปการใช้งานต่างๆ ของตัวเลือกที่กล่าวถึงก่อนหน้านี้
| เลื่อนการเลิกใช้งานให้เร็วขึ้น | เลื่อนการเลิกใช้งานให้เร็วขึ้น (มีข้อยกเว้น) | ป้องกันการเลิกใช้งานเพื่อรักษาเวลาสำหรับการย้ายข้อมูล | |
|---|---|---|---|
| นโยบายสิทธิ์ (ใช้กับหน้าเว็บ/เว็บไซต์) |
ได้ | ใช่ | ได้ |
| นโยบาย Enterprise (ใช้กับอุปกรณ์) |
ไม่ได้ | ไม่ได้ | ได้ |
| Chrome Flag (ใช้กับผู้ใช้แต่ละราย) |
ได้ | ไม่ใช่ | ไม่ได้ |
| การเปลี่ยนบรรทัดคำสั่งของ Chrome (ใช้กับผู้ใช้แต่ละราย) |
ได้ | ไม่ใช่ | ได้ |
บทสรุป
ระบบกำลังเลิกใช้งานตัวแฮนเดิล unload ตัวแฮนเดิลเหล่านี้ไม่น่าเชื่อถือมาเป็นเวลานานแล้ว และไม่รับประกันว่าจะทำงานในทุกกรณีที่มีการทำลายเอกสาร นอกจากนี้ ตัวแฮนเดิล unload ยังใช้ร่วมกับ bfcache ไม่ได้
เว็บไซต์ที่ใช้ตัวแฮนเดิล unload ควรเตรียมพร้อมสำหรับการเลิกใช้งานที่กำลังจะเกิดขึ้นนี้โดยทดสอบตัวแฮนเดิล unload ที่มีอยู่ นำออกหรือย้ายข้อมูลตัวแฮนเดิล หรือเลือกเลื่อนการเลิกใช้งานออกไปหากจำเป็น
คำขอบคุณ
ขอขอบคุณ Kenji Baheux, Fergal Daly, Adriana Jara และ Jeremy Wagner สำหรับความคิดเห็นที่เป็นประโยชน์ในการตรวจสอบ
รูปภาพหลักโดย Anja Bauermann ใน Unsplash