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

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

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

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

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

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

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

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

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

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

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

ทีม Chrome เชื่อว่าการใช้โมเดลมือถือในการจัดลำดับความสำคัญของ bfcache เหนือ unload บนเดสก์ท็อป จะทำให้เกิดการหยุดชะงักด้วยการทำให้ไม่น่าเชื่อถือมากขึ้นด้วยเช่นกัน ทั้งที่ก่อนหน้านี้ bfcache ค่อนข้างน่าเชื่อถือใน 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เพื่อช่วยคุณระบุปัญหาที่อาจทำให้หน้าเว็บไม่มีสิทธิ์ใช้แคชย้อนหลัง ซึ่งรวมถึงการใช้ตัวแฮนเดิล unload

หากต้องการทดสอบแคชย้อนหลัง/แคชไปข้างหน้า ให้ทำตามขั้นตอนต่อไปนี้

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

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

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

เครื่องมือทดสอบแคชย้อนหลังของเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome แสดงว่ามีการใช้ตัวแฮนเดิลการเลิกโหลด
เครื่องมือทดสอบแคชย้อนกลับ/ไปข้างหน้าของ Chrome DevTools

Reporting API

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

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

notRestoredReasons API ของ Bfcache

พร็อพเพอร์ตี้ notRestoredReasons ซึ่งเพิ่มลงในคลาส PerformanceNavigationTiming จะรายงานข้อมูลว่าระบบบล็อกไม่ให้เอกสารใช้ bfcache ในการนำทางหรือไม่ และเพราะเหตุใด ตัวอย่างลักษณะของคำเตือนออบเจ็กต์การตอบกลับเกี่ยวกับเครื่องมือฟัง 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 เพื่อให้ทำงานได้อย่างถูกต้องสามารถใช้นโยบาย ForcePermissionPolicyUnloadDefaultEnabled เพื่อป้องกันการทยอยเลิกใช้งานสำหรับอุปกรณ์ที่อยู่ภายใต้การควบคุมขององค์กร การเปิดใช้นโยบายนี้จะทำให้ unload ยังคงเปิดใช้โดยค่าเริ่มต้นสำหรับทุกต้นทาง หน้าเว็บอาจยังคงกำหนดนโยบายที่เข้มงวดมากขึ้นได้หากต้องการ เช่นเดียวกับการเลือกไม่ใช้ Permissions Policy ซึ่งเป็นเครื่องมือในการลดผลกระทบจากการเปลี่ยนแปลงที่อาจทำให้เกิดข้อขัดข้อง แต่ไม่ควรใช้เครื่องมือนี้อย่างถาวร

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