การเลิกใช้งานเหตุการณ์ยกเลิกการโหลด

เผยแพร่เมื่อวันที่ 10 สิงหาคม 2023, อัปเดตครั้งล่าสุด: 29 มิถุนายน 2026

ระบบจะค่อยๆ เลิกใช้งานเหตุการณ์ unload โดยจะค่อยๆ เปลี่ยนค่าเริ่มต้นเพื่อให้ตัวแฮนเดิล unload หยุดทำงานในหน้าเว็บ เว้นแต่หน้าเว็บจะเลือกใช้เพื่อเปิดใช้งานอีกครั้งอย่างชัดแจ้ง

ไทม์ไลน์การเลิกใช้งาน

เราสังเกตเห็นว่าลักษณะการทำงานของการยกเลิกการโหลดน่าจะมีการเปลี่ยนแปลงตั้งแต่เดือนมกราคม 2019 ซึ่งเป็นช่วงที่เราประกาศความตั้งใจที่จะใช้ Back-Forward Cache เราได้ทำการเผยแพร่ข้อมูลในวงกว้างควบคู่ไปกับการดำเนินการใช้งาน ซึ่งส่งผลให้มีการใช้งานการยกเลิกการโหลดลดลงอย่างมาก นอกจากนี้ เรายังเริ่มเสนอวิธีทดสอบผลกระทบของการเลิกใช้งานการยกเลิกการโหลดจาก Chrome 115 เพื่อเสริมการเผยแพร่ข้อมูลนี้ด้วย ดังนี้

ตลอดปี 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
ไทม์ไลน์การเลิกใช้งานเว็บไซต์ 50 อันดับแรก

ในปี 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 ได้รับการออกแบบมาให้ทำงานเมื่อมีการยกเลิกการโหลดเอกสาร ในทางทฤษฎีแล้ว เหตุการณ์นี้สามารถใช้เพื่อเรียกใช้โค้ดได้ทุกครั้งที่ผู้ใช้ออกจากหน้าเว็บ หรือใช้เป็นฟังก์ชันเรียกกลับเมื่อสิ้นสุดเซสชัน

สถานการณ์ที่ใช้เหตุการณ์นี้บ่อยที่สุด ได้แก่

  • การบันทึกข้อมูลผู้ใช้: บันทึกข้อมูลก่อนออกจากหน้าเว็บ
  • การทำงานด้านการล้างข้อมูล: ปิดแหล่งข้อมูลที่เปิดอยู่ก่อนที่จะออกจากหน้าเว็บ
  • การส่งข้อมูลวิเคราะห์: ส่งข้อมูลที่เกี่ยวข้องกับการโต้ตอบของผู้ใช้เมื่อสิ้นสุดเซสชัน

อย่างไรก็ตาม เหตุการณ์ 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 ให้ทำตามขั้นตอนต่อไปนี้

  1. เปิดเครื่องมือสำหรับนักพัฒนาเว็บในหน้าเว็บ แล้วไปที่แอปพลิเคชัน > บริการเบื้องหลัง > แคชย้อนหลัง

  2. คลิกทดสอบ Back-Forward Cache Chrome จะนำคุณไปยัง chrome://terms/ และกลับไปยังหน้าเว็บโดยอัตโนมัติ หรือคุณจะคลิกปุ่มย้อนกลับและไปข้างหน้าของเบราว์เซอร์ก็ได้

หากหน้าเว็บไม่สามารถใช้ Back-Forward Cache ได้ แท็บBack-Forward Cache จะแสดงรายการปัญหา ในส่วนดำเนินการได้ คุณจะเห็นว่ามีการใช้ unload หรือไม่

เครื่องมือทดสอบ Back-Forward Cache ของเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome แสดงว่ามีการใช้ตัวแฮนเดิลการเลิกโหลด
เครื่องมือทดสอบ Back-Forward Cache ของเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome

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