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

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

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

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

การลดความเสี่ยงของ Chrome

ใน Chrome แผนสำรองคือการใช้แฟล็กเพื่อตรึงเวอร์ชันหลักไว้ที่ 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 Webcompat สามารถแก้ปัญหาเว็บไซต์ที่เสียหายใน 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" แล้วเลือกตัวเลือก "Firefox 100 User-Agent String"

ทดสอบและส่งรายงาน

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