Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบเครือข่าย >> อินเทอร์เน็ต

แก้ปัญหา Cookies ของ Firefox เสียหาย: กู้คืนการล็อกอินและเซสชันบน Windows

ปัญหาแปลกประหลาดได้เกิดขึ้นกับคอมพิวเตอร์หนึ่งเครื่องที่รัน Windows โดยใช้ Firefox เป็นเบราว์เซอร์หลัก พร้อมกับโปรไฟล์ที่ใช้งานมามากกว่าหนึ่งทศวรรษ วันจันทร์หนึ่งผมเปิดเบราว์เซอร์ เข้าเว็บไซต์ที่เยี่ยมชมบ่อย และพบว่าถูกล็อกเอาท์ไปหมด เว็บไซต์อีกแห่งก็เช่นกัน ดูเหมือนว่าการล็อกอินทั้งหมดหายไป

เนื่องจากผมเก็บแบ็กอัปทุกอย่างไว้ ผมจึงนำไฟล์ฐานข้อมูลคุกกี้ cookies.sqlite มาเรียกคืนในโปรไฟล์ Firefox และทุกอย่างกลับสู่ปกติ แต่ไม่กี่วันต่อมา ปัญหาเกิดขึ้นอีกครั้ง ด้วยความสนใจ ผมเริ่มสืบสวนปัญหาที่ค่อนข้างแปลกและขาดเอกสารอ้างอิง ผมเชื่อว่ารู้สาเหตุและมีวิธีแก้ไข

แก้ปัญหา Cookies ของ Firefox เสียหาย: กู้คืนการล็อกอินและเซสชันบน Windows

หมายเหตุ: รูปภาพมาจาก wikipedia.org ใช้สัญญาอนุญาต GFDL 1.2

รายละเอียดปัญหา

แหล่งข้อมูลออนไลน์ให้ข้อมูลน้อยมาก พบเพียงการอ้างอิงปัญหาคล้ายกันสมัย Firefox 6 และโพสต์ Reddit เดี่ยวเกี่ยวกับ Quantum (Firefox 57 ขึ้นไป) มีคำถามมากเกี่ยวกับวิธีกู้คุกกี้ แต่ขาดรายละเอียดเกี่ยวกับอาการที่ผู้ใช้เผชิญ โดยรูปแบบทั่วไปคือ ระหว่างการใช้งานปกติ ฐานข้อมูลคุกกี้จะเสียหาย ผู้ใช้จะไม่รู้จนครั้งต่อไปที่เปิดเบราว์เซอร์ เมื่อฐานข้อมูลเสียหายถูกลบและสร้างใหม่ ไฟล์ทั้งสองอยู่ในโปรไฟล์ Firefox ชื่อ cookies.sqlite และ cookies.sqlite.bak หากเก็บแบ็กอัปไว้ การทับไฟล์ฐานข้อมูลเป็นวิธีง่ายที่สุดในการกู้เซสชันล็อกอินเก่า แต่ไม่ช่วยให้เข้าใจสาเหตุ

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

แก้ปัญหา Cookies ของ Firefox เสียหาย: กู้คืนการล็อกอินและเซสชันบน Windows

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

วิธีแก้ไข

ผมล้างข้อมูลชั่วคราวและคุกกี้ (เก็บเฉพาะล็อกอินที่จำเป็น) ผมสังเกตว่า Firefox เร็วขึ้นเล็กน้อย - ดูเหมือนเล็กน้อยแต่สังเกตได้ Chrome ก็แสดง favicon ทันทีเช่นกัน พฤติกรรมที่ควรเป็น deterministic จริงๆ ไม่ได้เป็นอย่างนั้น เบราว์เซอร์ได้รับผลกระทบจากการสะสมข้อมูลชั่วคราวช้าๆ และมันส่งผลจริง นี่น่าสนใจเอง

แก้ปัญหา Cookies ของ Firefox เสียหาย: กู้คืนการล็อกอินและเซสชันบน Windows

เรื่อง Firefox: ผมปล่อยให้ระบบรันต่อประมาณสองเดือนก่อนเขียนบทความนี้ หลังจากฐานข้อมูลคุกกี้เสียหาย 3 ครั้งภายในสองสัปดาห์ มันเงียบสงบมาตั้งแต่ล้างข้อมูล และผมมั่นใจ 100% ว่าแก้ปัญหาได้ แม้จะเป็นแค่ 추측 แต่ผมมั่นใจค่อนข้างสูง

ไฟล์ cookies.sqlite ของ Firefox มีขีดจำกัดขนาด ผมสังเกตว่าค่าไม่เหมือนกันทุกระบบ แต่ขนาดที่พบบ่อยคือ 1,024 KB และบางครั้ง 2,048 KB ขนาดนี้กำหนดจำนวนคุกกี้ที่ลงทะเบียนได้ หากถึงขีดจำกัด Firefox จะถือว่า cookies.sqlite เสียหายและล้างมัน ไม่มีกลไกอัจฉริยะที่จะลบคุกกี้เก่าหรือที่ใช้บ่อยน้อย หรือพยายามขยายขนาดฐานข้อมูล

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

สรุป

บทความแบบ "ลองผิดลองถูก" ไม่ใช่ที่ผมชอบ เพราะผมเกลียดการ推測 ปัญหาซอฟต์แวร์ควรเป็น deterministic เพื่อให้ทำซ้ำและแสดงปัญหาได้ง่าย แต่เหมือน race condition ที่เกิดจาก timing และลำดับเหตุการณ์ที่แปลก ปัญหาแบบนี้ยากต่อการทำซ้ำ แม้กลไกแก้ไขจะชัดเจน

โดยรวม หากคุณใช้ Firefox และเซสชันล็อกอิน (คุกกี้) ถูกลบ คำแนะนำคือ เรียกคืนจากแบ็กอัป (เก็บไว้หนึ่งชุดนะ) แล้วล้างข้อมูลอย่างเป็นระบบ ลบสิ่งที่ไม่ต้องการ เก็บเฉพาะคุกกี้ขั้นต่ำสำหรับล็อกอินทั่วไป สามารถล้างเองหรือใช้เครื่องมือบำรุงรักษา แต่เครื่องมือบางอย่างซับซ้อน นั่นเป็นเรื่องอื่น ไปราวนี้ละ จะว่า Captain Obvious ก็ไม่ได้ เพราะมันไม่ได้ชัดเจนแบบนั้น ลาก่อน

Cheers.