Chrome และ Firefox จะเปลี่ยนเป็นเวอร์ชันหลัก 100 เร็วๆ นี้

การเปลี่ยนแปลงสตริง User Agent, กลยุทธ์ที่ Chrome และ Firefox ใช้เพื่อลดผลกระทบ และวิธีที่คุณช่วยได้

Chrome และ Firefox จะอัปเดตเป็นเวอร์ชัน 100 ในอีก 2-3 เดือน ซึ่งอาจทําให้เว็บไซต์ที่อาศัยการระบุเวอร์ชันเบราว์เซอร์เพื่อดําเนินตรรกะทางธุรกิจเกิดข้อผิดพลาด โพสต์นี้จะกล่าวถึงลำดับเวลาของเหตุการณ์ กลยุทธ์ที่ Chrome และ Firefox ใช้ในการบรรเทาผลกระทบ และวิธีที่คุณช่วยได้

สตริง User Agent

User Agent (UA) คือสตริงที่เบราว์เซอร์ส่งในส่วนหัว HTTP เพื่อให้เซิร์ฟเวอร์ระบุเบราว์เซอร์ได้ นอกจากนี้ คุณยังเข้าถึงสตริงผ่าน JavaScript ได้ด้วย โดยใช้ navigator.userAgent โดยปกติจะมีรูปแบบดังนี้

<browser_name>/<major_version>.<minor_version>

ตัวอย่างเช่น เบราว์เซอร์เวอร์ชันล่าสุด ณ เวลาที่เผยแพร่โพสต์นี้มีดังนี้

  • Chrome: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36
  • Firefox: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:96.0) Gecko/20100101 Firefox/96.0
  • Safari: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Safari/605.1.15

เวอร์ชันหลัก 100 - หมายเลขเวอร์ชัน 3 หลัก

เวอร์ชันหลัก 100 เป็นเหตุการณ์สำคัญสำหรับทั้ง Chrome และ Firefox นอกจากนี้ ยังอาจทําให้เว็บไซต์ใช้งานไม่ได้เมื่อเราเปลี่ยนจากหมายเลขเวอร์ชัน 2 หลักเป็นหมายเลขเวอร์ชัน 3 หลัก นักพัฒนาเว็บใช้เทคนิคทุกประเภทในการแยกวิเคราะห์สตริงเหล่านี้ ตั้งแต่โค้ดที่กำหนดเองไปจนถึงการใช้ไลบรารีการแยกวิเคราะห์ User-Agent ซึ่งสามารถใช้เพื่อกำหนดตรรกะการประมวลผลที่เกี่ยวข้องได้ เร็วๆ นี้ User-Agent และกลไกการรายงานเวอร์ชันอื่นๆ จะรายงานหมายเลขเวอร์ชัน 3 หลัก

ไทม์ไลน์เวอร์ชัน 100

เบราว์เซอร์เวอร์ชัน 100 จะเปิดตัวเป็นเวอร์ชันทดลองก่อน (Chrome Canary, Firefox Nightly) จากนั้นเป็นเวอร์ชันเบต้า และสุดท้ายเป็นเวอร์ชันที่เสถียร

เบราว์เซอร์ ไทม์ไลน์
Chrome (กำหนดการเผยแพร่) 29 มีนาคม 2022
Firefox (กำหนดเวลาการเผยแพร่) 3 พฤษภาคม 2022

เหตุใดหมายเลขเวอร์ชัน 3 หลักจึงทำให้เกิดปัญหาได้

เมื่อเบราว์เซอร์พัฒนาเป็นเวอร์ชัน 10 เป็นครั้งแรกเมื่อ 12 ปีก่อน เราพบปัญหามากมายเกี่ยวกับไลบรารีการแยกวิเคราะห์ User-Agent เนื่องจากหมายเลขเวอร์ชันหลักเปลี่ยนจาก 1 เป็น 2

เมื่อไม่มีข้อกําหนดเฉพาะที่ชัดเจน เบราว์เซอร์แต่ละรุ่นจะมีรูปแบบที่แตกต่างกันสําหรับสตริง User-Agent และการแยกวิเคราะห์ User-Agent ที่เจาะจงเว็บไซต์ ไลบรารีการแยกวิเคราะห์บางรายการอาจมีข้อสันนิษฐานหรือข้อบกพร่องที่เขียนมาอย่างเจาะจง ซึ่งไม่คำนึงถึงหมายเลขเวอร์ชันหลัก 3 หลัก ไลบรารีจํานวนมากปรับปรุงตรรกะการแยกวิเคราะห์เมื่อเบราว์เซอร์เปลี่ยนไปใช้หมายเลขเวอร์ชัน 2 หลัก ดังนั้นการก้าวสู่เหตุการณ์สําคัญแบบ 3 หลักจึงคาดว่าจะก่อให้เกิดปัญหาน้อยลง Mike Taylor วิศวกรในทีม Chrome ได้ทําการสํารวจไลบรารีการแยกวิเคราะห์ UA ทั่วไป ซึ่งไม่พบปัญหาใดๆ เราได้พบปัญหาบางอย่างขณะทำการทดสอบ Chrome ในพื้นที่ทำงาน ซึ่งเรากำลังดำเนินการแก้ไข

เบราว์เซอร์จะดำเนินการอย่างไร

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

นอกจากนี้ เรายังมีกลยุทธ์การบรรเทาผลกระทบสำรองไว้ด้วย ในกรณีที่การเผยแพร่เวอร์ชัน 100 ไปยังเวอร์ชันเสถียรทำให้เกิดความเสียหายต่อเว็บไซต์มากกว่าที่คาดไว้

การลดผลกระทบใน Chrome

ใน Chrome แผนสำรองคือการใช้ Flag เพื่อหยุดเวอร์ชันหลักไว้ที่ 99 และรายงานหมายเลขเวอร์ชันหลักจริงในส่วนเวอร์ชันย่อยของสตริง User Agent (โค้ดใช้งานได้แล้ว)

เวอร์ชัน Chrome ที่รายงานในสตริง User Agent เป็นไปตามรูปแบบ <major_version>.<minor_version>.<build_number>.<patch_number>

หากใช้แผนสำรองข้อมูล สตริง User-Agent จะมีลักษณะดังนี้

99.101.4988.0

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

การลดปัญหาใน Firefox

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

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

กลยุทธ์ทุกรูปแบบที่เพิ่มความซับซ้อนให้กับสตริง User-Agent จะมีผลอย่างมากต่อระบบนิเวศ มาช่วยกันหลีกเลี่ยงปัญหานี้กัน

คุณทำอะไรได้บ้างเพื่อช่วยเหลือ

ใน Chrome และ Firefox Nightly คุณสามารถกำหนดค่าเบราว์เซอร์ให้รายงานเวอร์ชันเป็น 100 ได้ในตอนนี้ และรายงานปัญหาที่พบ

กำหนดค่า Chrome ให้รายงานเวอร์ชันหลักเป็น 100

  1. ไปที่ chrome://flags/#force-major-version-to-100
  2. ตั้งค่าตัวเลือกเป็น Enabled

กำหนดค่า Firefox Nightly ให้รายงานเวอร์ชันหลักเป็น 100

  1. เปิดเมนูการตั้งค่าของ Firefox Nightly
  2. ค้นหา "Firefox 100" แล้วเลือกตัวเลือก "สตริง User Agent ของ Firefox 100"

ทดสอบและรายงานไฟล์

  • หากคุณเป็นผู้ดูแลเว็บไซต์ ให้ทดสอบเว็บไซต์ด้วย Chrome และ Firefox 100 ตรวจสอบโค้ดและไลบรารีการแยกวิเคราะห์ User Agent และตรวจสอบว่าสามารถจัดการหมายเลขเวอร์ชัน 3 หลักได้ เราได้รวบรวมรูปแบบที่ใช้งานไม่ได้ในปัจจุบันไว้บางส่วน
  • หากคุณพัฒนาคลังการแยกวิเคราะห์ User-Agent ให้เพิ่มการทดสอบเพื่อแยกวิเคราะห์เวอร์ชันที่มากกว่าหรือเท่ากับ 100 การทดสอบในช่วงแรกๆ แสดงให้เห็นว่าไลบรารีเวอร์ชันล่าสุดจัดการกับปัญหานี้ได้อย่างถูกต้อง อย่างไรก็ตาม เว็บมีประวัติอันยาวนาน ดังนั้นหากคุณมีไลบรารีการแยกวิเคราะห์เวอร์ชันเก่า ก็ถึงเวลาตรวจสอบปัญหาและอัปเกรดแล้ว
  • หากคุณท่องเว็บและพบปัญหาเกี่ยวกับเวอร์ชันหลัก 100 ให้ส่งรายงานใน webcompat.com