ข้ามไปเนื้อหาหลัก

นักพัฒนา Mozilla แก้ยาวนาน 5 ปี บั๊กน่ารำคาญลบ Amazon ออกจาก Top Sites ใน Firefox ไม่ได้

เจาะเบื้องหลังการแก้ปัญหาบั๊กเรื้อรังบน Firefox New Tab ที่ผู้ใช้ไม่สามารถลบเว็บไซต์อย่าง Amazon ออกจากรายการ Top Sites ได้สำเร็จ

เรียบเรียงโดย AI
Inewgen
31 Jul 2026ที่มา: Dev.to3 นาทีอ่าน (0 ครั้ง)อัปเดตล่าสุด 02 Aug 2026
แชร์
นักพัฒนา Mozilla แก้ยาวนาน 5 ปี บั๊กน่ารำคาญลบ Amazon ออกจาก Top Sites ใน Firefox ไม่ได้

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขนาดตัวอักษร
  • สรุปเรื่องราวการแก้บั๊ก Firefox อายุ 5 ปี ในโครงการ Summer Bug Smash
  • ปัญหาเกิดจาก URL ถูกเปลี่ยนเป็น search-shortcut ทำให้ลบออกจากประวัติการใช้งานไม่ได้
  • วิศวกร Mozilla สองท่านคือ mak และ thecount ให้คำแนะนำและแนวทางแก้ไขจนสำเร็จ
  • ทางแก้คือการเก็บค่า original_url ไว้เพื่อใช้อ้างอิงตอนลบข้อมูลจริง

บทความนี้เป็นส่วนหนึ่งของการส่งผลงานในโครงการ DEV's Summer Bug Smash ร่วมกับ Sentry โดยผู้เขียนซึ่งเป็นอาสาสมัคร Open-source ของ Mozilla ได้แชร์ประสบการณ์การตามล่าและแก้ไขบั๊กที่มีอายุยาวนานถึง 5 ปีเต็ม บนเว็บเบราว์เซอร์ Firefox หัวข้อรายงานบั๊กบน Bugzilla ใช้ชื่อว่า "Cannot remove amazon.com from top sites list" ซึ่งสะท้อนถึงความหงุดหงิดที่ผู้ใช้งานต้องเผชิญมาอย่างยาวนาน

ผู้ใช้งานรายนี้พบว่าไม่สามารถลบเว็บไซต์ amazon.com ออกจากส่วน Top Sites บนหน้า New Tab ของเบราว์เซอร์ Firefox ได้เลย ไม่ว่าจะพยายามคลิกขวาแล้วเลือก "Delete from History" หรือกดปุ่ม "Dismiss" สักกี่ครั้ง ไอคอนของ Amazon ก็ยังคงตั้งตระหง่านอยู่บนหน้าจอราวกับแขกไม่ได้รับเชิญที่ไม่ยอมกลับบ้าน โดยก่อนจะเข้าใจปัญหา เราต้องทำความเข้าใจองค์ประกอบหลักสามส่วนของ Firefox ได้แก่ Top Sites (ตารางทางลัดเว็บไซต์บนหน้า New Tab), New Tab Page (หน้าจอที่เปิดขึ้นมาใหม่), และ Places (ฐานข้อมูล SQLite ที่เก็บประวัติการท่องเว็บ)

ในกระบวนการทำงาน Firefox จะนำลิงก์ไปตรวจสอบกับรายการ search-shortcut sites ที่มีอยู่ในตัว เช่น Google, Amazon, Bing, DuckDuckGo, eBay, Twitter และ Wikipedia หากลิงก์ตรงกับรายชื่อเหล่านี้ Firefox จะทำการสลับ URL ของไทต์นั้นให้กลายเป็นเวอร์ชันที่ออกแบบมาเพื่อกระตุ้นการค้นหาบนเว็บไซต์นั้น แทนที่จะพาไปยังหน้าแรกที่คุณเข้าชมจริงๆ นั่นจึงเป็นสาเหตุที่ทำให้ URL เปลี่ยนไป และไม่ตรงกับ URL ดั้งเดิมในฐานข้อมูล Places อีกต่อไป

การทำงานของระบบ Top Sites ในเบราว์เซอร์สมัยใหม่มักมีความซับซ้อนมากกว่าแค่การแสดงผลประวัติการเข้าชมแบบตรงไปตรงมา การผสมผสานระหว่างประวัติผู้ใช้จริง เนื้อหาผู้สนับสนุน (spocs) และทางลัดการค้นหา (search-shortcuts) มักสร้างจุดบอดในแง่ของสถาปัตยกรรมซอฟต์แวร์ ซึ่งในกรณีของ Firefox การแปลง URL เบื้องหลังเพื่อรองรับฟีเจอร์การค้นหาโดยที่ไม่ได้เก็บรักษาร่องรอยของ URL ต้นทางไว้ ทำให้คำสั่งลบ (DELETE request) จากฝั่งผู้ใช้ไม่สามารถหาเป้าหมายเจอในฐานข้อมูลได้

ไม่อยากพลาดข่าวใหม่?

สมัครรับสรุปข่าวสารใหม่ทางอีเมล ไม่บ่อยจนรำคาญ

โฆษณา

ความพยายามครั้งแรกของผู้เขียนคือการบล็อก URL ทันทีเมื่อผู้ใช้คลิก "Delete History" เพื่อไม่ให้มันปรากฏขึ้นมาอีก แต่ mak ซึ่งเป็นวิศวกรของ Mozilla ได้คัดค้านแนวทางนี้ โดยชี้ให้เห็นว่าการบล็อกเว็บไซต์เงียบๆ พร้อมกับลบออกจาก Top Sites โดยไม่แจ้งให้ผู้ใช้ทราบล่วงหน้า อาจสร้างพฤติกรรมที่ไม่คาดคิด และเป็นการลดการควบคุมของผู้ใช้ลง แทนที่จะเพิ่มความโปร่งใส

ต่อมาผู้เขียนได้รับคำแนะนำครั้งสำคัญจากวิศวกรอีกท่านหนึ่งชื่อ thecount ซึ่งชี้เป้าให้ลองเพิ่มคำสั่ง console.log(link.url, searchProvider.url); ก่อนบรรทัดที่ 1093 ในไฟล์ NewTabUtils.sys.mjs บนซอร์สโค้ดของ Firefox ผลลัพธ์ที่ได้บนคอนโซลคือการแสดงผลลัพธ์ระหว่าง "https://www.amazon.com/" และ "https://amazon.com" ซึ่งทำให้เห็นชัดเจนว่า URL เกิดการเปลี่ยนแปลงและไม่ตรงกับค่าดั้งเดิมใน Places อีกต่อไป

แนวทางแก้ไขที่ถูกต้องจึงเป็นการนำแนวคิดจากสถาปัตยกรรมแบบ Full-stack MVC มาปรับใช้ โดยการบันทึก URL ดั้งเดิมเก็บไว้ในตัวแปร original_url ก่อนที่มันจะถูกสลับโดยระบบของ Firefox ดังนี้:

  • เก็บค่า URL เดิมไว้ก่อนถูกสลับ: link.original_url = link.url;
  • ตรวจสอบและใช้ค่า original_url เมื่อผู้ใช้ต้องการลบเว็บไซต์ออกจากระบบ
  • ทำให้ระบบฝั่งแบ็กเอนด์ (PlacesFeed.sys.mjs) ได้รับไอดีหรือพารามิเตอร์ที่ถูกต้องสำหรับการลบข้อมูลในฐานข้อมูล SQLite

ที่มา: Dev.to

ความคิดเห็น

แสดงความคิดเห็น
0/2000

พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้