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

เผยแพร่: 10 สิงหาคม 2023, อัปเดตล่าสุด: 28 เมษายน 2026

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

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

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

ตลอดปี 2024 เราได้แก้ไขปัญหาหลายอย่างที่ขัดขวางการเริ่มเปิดตัว และตลอดปี 2025 เราได้เปิดตัวการเลิกใช้งานกับเว็บไซต์ยอดนิยม 50 อันดับแรก

Milestone วันที่ของเหตุการณ์สำคัญ เว็บไซต์ยอดนิยม 50 อันดับ % ของต้นทางอื่นๆ
135 Mar 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 อันดับแรก

ตอนนี้เราได้เลิกใช้งานเว็บไซต์ 50 อันดับแรกแล้ว และได้รับอนุมัติเพิ่มเติมในการเปิดตัวฟีเจอร์นี้ในต้นทางทั้งหมด โดยจะแบ่งออกเป็น 8 ขั้นตอน (หรือประมาณ 32 สัปดาห์) ตามรายละเอียดในตารางต่อไปนี้

Milestone วันที่ของเหตุการณ์สำคัญ เว็บไซต์ยอดนิยม 50 อันดับ % ของการโหลดหน้าเว็บ Chrome สำหรับทุกเว็บไซต์
146 Mar 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
ไทม์ไลน์การเลิกใช้งาน unload

ฉากหลัง

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

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

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

อย่างไรก็ตาม unload เหตุการณ์ไม่น่าเชื่อถืออย่างยิ่ง

ใน Chrome และ Firefox บนเดสก์ท็อป unload ค่อนข้างน่าเชื่อถือ แต่ส่งผลเสียต่อประสิทธิภาพของเว็บไซต์โดยการป้องกันการใช้ bfcache (Back-Forward Cache)

ในเบราว์เซอร์บนอุปกรณ์เคลื่อนที่ unload มักจะไม่ทำงานเนื่องจากแท็บมักจะทำงานในเบื้องหลังและปิดไป ด้วยเหตุนี้ เบราว์เซอร์จึงเลือกให้ความสำคัญกับ bfcache ในอุปกรณ์เคลื่อนที่มากกว่า unload ซึ่งทำให้ unload ไม่น่าเชื่อถือมากยิ่งขึ้น Safari ยังใช้ลักษณะการทำงานนี้ในเดสก์ท็อปด้วย

ทีม Chrome เชื่อว่าการใช้โมเดลมือถือในการจัดลำดับความสำคัญของ bfcache เหนือ unload ในเดสก์ท็อปจะทำให้เกิดการหยุดชะงักเนื่องจากจะทำให้การทำงานไม่น่าเชื่อถือมากขึ้นด้วย ทั้งที่ก่อนหน้านี้ฟีเจอร์นี้ค่อนข้างน่าเชื่อถือใน Chrome (และ Firefox) แต่เป้าหมายของ Chrome คือการนำเหตุการณ์ unload ออกโดยสมบูรณ์ ในระหว่างนี้ ฟีเจอร์นี้จะยังคงใช้งานได้บนเดสก์ท็อปสำหรับผู้ที่เลือกไม่ใช้การเลิกใช้งานอย่างชัดเจน

เหตุผลที่เลิกใช้งานเหตุการณ์ unload

การเลิกใช้งาน unload เป็นขั้นตอนสำคัญในการรับรู้ที่ใหญ่ขึ้นมากเกี่ยวกับเว็บที่เราใช้อยู่ในปัจจุบัน unload เหตุการณ์นี้ทำให้รู้สึกผิดๆ ว่าควบคุมวงจรแอปได้ ซึ่งไม่เป็นความจริงมากขึ้นเรื่อยๆ เมื่อพิจารณาถึงวิธีที่เราท่องเว็บในโลกคอมพิวเตอร์สมัยใหม่

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

การนำunload event ออกเนื่องจากล้าสมัยเป็นการยอมรับว่าในฐานะนักพัฒนาเว็บ เราต้องตรวจสอบว่ากระบวนทัศน์ของเราตรงกับโลกแห่งความเป็นจริง และไม่ขึ้นอยู่กับแนวคิดที่ล้าสมัยซึ่งไม่เป็นความจริงอีกต่อไป

ทางเลือกแทนกิจกรรม unload

ขอแนะนำให้ใช้ unload แทน

  • visibilitychange: เพื่อระบุเวลาที่การมองเห็นของหน้าเว็บเปลี่ยนแปลง เหตุการณ์นี้จะเกิดขึ้นเมื่อผู้ใช้สลับแท็บ ย่อหน้าต่างเบราว์เซอร์ หรือเปิดหน้าใหม่ พิจารณาสถานะ hidden ซึ่งเป็นเวลาที่เชื่อถือได้ล่าสุดในการบันทึกข้อมูลแอปและข้อมูลผู้ใช้
  • 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. ในหน้าเว็บ ให้เปิดเครื่องมือสำหรับนักพัฒนาเว็บ แล้วไปที่แอปพลิเคชัน > บริการที่ทำงานอยู่เบื้องหลัง > Back-Forward Cache

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

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

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

Reporting API

คุณสามารถใช้ Reporting API ร่วมกับนโยบายสิทธิ์แบบอ่านอย่างเดียวเพื่อตรวจหาการใช้งาน unload จากผู้ใช้เว็บไซต์

ดูรายละเอียดเพิ่มเติมได้ที่การใช้ Reporting API เพื่อค้นหาการเลิกโหลด

notRestoredReasons API ของ Bfcache

พร็อพเพอร์ตี้ 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
  • นโยบายขององค์กร: เครื่องมือสำหรับผู้ดูแลระบบไอทีในการกำหนดค่า Chrome ให้กับองค์กรหรือธุรกิจ โดยกำหนดค่าได้โดยใช้แผงผู้ดูแลระบบ เช่น คอนโซลผู้ดูแลระบบของ Google
  • Chrome Flag: ช่วยให้นักพัฒนาซอฟต์แวร์แต่ละรายเปลี่ยนunloadการตั้งค่าการเลิกใช้งานเพื่อทดสอบผลกระทบในเว็บไซต์ต่างๆ ได้

นโยบายสิทธิ์

มีการเพิ่มนโยบายสิทธิ์จาก Chrome 115 เพื่อให้เว็บไซต์เลือกไม่ใช้ตัวแฮนเดิล unload และใช้ประโยชน์จาก bfcache ได้ทันทีเพื่อปรับปรุงประสิทธิภาพของเว็บไซต์ ดูตัวอย่างเหล่านี้เกี่ยวกับวิธีตั้งค่าสำหรับเว็บไซต์ ซึ่งจะช่วยให้เว็บไซต์เตรียมพร้อมรับมือกับการunloadเลิกใช้งานได้

เราได้ขยายเวลาใน Chrome 117 เพื่อให้เว็บไซต์ทำในทางกลับกันได้ และเลือกที่จะลองเรียกใช้แฮนเดิล unload ต่อไปได้เหมือนที่ทำในปัจจุบัน เนื่องจาก Chrome จะเปลี่ยนค่าเริ่มต้นสำหรับแฮนเดิลเหล่านี้ไม่ให้เรียกใช้ในอนาคต ดูตัวอย่างเหล่านี้เกี่ยวกับวิธีอนุญาตให้ตัวแฮนเดิลการเลิกโหลดเริ่มทำงานในเว็บไซต์ต่อไป แม้ว่าเราจะสนับสนุนให้เจ้าของเว็บไซต์เลิกใช้ตัวแฮนเดิล unload เนื่องจากไม่น่าเชื่อถือ แต่เราวางแผนที่จะรองรับการเลือกไม่ใช้สำหรับเว็บไซต์ที่จำเป็นต้องใช้ในอนาคตอันใกล้นี้ นอกจากนี้ การเลือกใช้ใหม่ไม่ได้ทำให้ตัวแฮนเดิล unload น่าเชื่อถือมากขึ้นบนอุปกรณ์เคลื่อนที่ แต่เพียงแค่คืนค่าสถานะปัจจุบัน

นโยบายขององค์กร

องค์กรที่มีซอฟต์แวร์ที่ต้องใช้เหตุการณ์ unload เพื่อให้ทำงานได้อย่างถูกต้องสามารถใช้นโยบาย ForcePermissionPolicyUnloadDefaultEnabled เพื่อป้องกันการทยอยเลิกใช้งานสำหรับอุปกรณ์ที่อยู่ภายใต้การควบคุมขององค์กร การเปิดใช้นโยบายนี้จะทำให้ unload ยังคงเปิดใช้โดยค่าเริ่มต้นสำหรับทุกต้นทาง หน้าเว็บอาจยังคงกำหนดนโยบายที่เข้มงวดมากขึ้นได้หากต้องการ เครื่องมือนี้เป็นเครื่องมือในการลดการเปลี่ยนแปลงที่อาจทำให้เกิดข้อขัดข้องเช่นเดียวกับการเลือกไม่ใช้ Permissions Policy อีกครั้งที่เราขอแนะนำให้เจ้าของเว็บไซต์หยุดใช้ตัวแฮนเดิล unload แต่ Chrome วางแผนที่จะรองรับการเลือกไม่ใช้ระดับองค์กรนี้ในอนาคตอันใกล้นี้สำหรับเว็บไซต์ที่จำเป็นต้องใช้

Chrome Flag และการเปลี่ยนบรรทัดคำสั่ง

นอกจากนโยบายขององค์กรแล้ว คุณยังปิดใช้การเลิกใช้งานสำหรับผู้ใช้แต่ละรายได้โดยใช้ Flag ของ Chrome และสวิตช์บรรทัดคำสั่ง

การตั้งค่า chrome://flags/#deprecate-unload เป็น enabled จะทำให้การเลิกใช้งานเริ่มต้นเร็วขึ้นและป้องกันไม่ให้ตัวแฮนเดิล unload เริ่มทำงาน คุณยังคงลบล้างได้ทีละเว็บไซต์โดยใช้นโยบายสิทธิ์ แต่จะยังคงทริกเกอร์โดยค่าเริ่มต้น

นอกจากนี้ คุณยังควบคุมการตั้งค่าเหล่านี้ได้ด้วยสวิตช์บรรทัดคำสั่ง

การเปรียบเทียบตัวเลือก

ตารางต่อไปนี้สรุปการใช้งานตัวเลือกต่างๆ ที่กล่าวถึงก่อนหน้านี้

เลื่อนการเลิกใช้งาน เลื่อนการเลิกใช้งาน (มีข้อยกเว้น) ป้องกันการเลิกใช้งานเพื่อรักษาเวลาสำหรับการย้ายข้อมูล
นโยบายสิทธิ์
(ใช้กับหน้าเว็บ/เว็บไซต์)
ใช่ ได้ ใช่
นโยบายขององค์กร
(มีผลกับอุปกรณ์)
ไม่ ไม่ได้ ใช่
ฟีเจอร์ทดลองของ Chrome
(ใช้กับผู้ใช้แต่ละราย)
ใช่ ไม่ใช่ ไม่
การเปลี่ยนบรรทัดคำสั่งของ Chrome
(ใช้กับผู้ใช้แต่ละราย)
ใช่ ไม่ใช่ ใช่

บทสรุป

ตัวแฮนเดิล unload อยู่ระหว่างการเลิกใช้งาน ซึ่งไม่น่าเชื่อถือมาเป็นเวลานานแล้ว และไม่รับประกันว่าจะเริ่มทำงานในทุกกรณีที่เอกสารถูกทำลาย นอกจากนี้ ตัวแฮนเดิล unload ยังใช้ร่วมกับ bfcache ไม่ได้

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

คำขอบคุณ

ขอขอบคุณ Kenji Baheux, Fergal Daly, Adriana Jara และ Jeremy Wagner ที่ช่วยตรวจสอบบทความนี้

รูปภาพหลักโดย Anja Bauermann ใน Unsplash