มาดูดฝุ่นให้ Firefox ตัวเบากันเถอะ!
posted on 30 Aug 2009 14:48 by ninkungz in Firefox
จริง ๆ เรื่องนี้ผมว่าจะเขียนตั้งแต่เดือนกรกฎา แต่เพราะไม่รู้ว่าจะเขียนยังไงให้พวกคุณ ๆ เอาไปใช้กันได้ง่าย ๆ ก็เลยซุ่มทำอะไรบางอย่างให้เอาไปใช้กันง่าย ๆ อยู่ แต่เมื่อเวลาผ่านไป... ไอ้ที่ซุ่มก็เปลี่ยนเป็นอู้ จึงไม่มีอะไรคืบหน้า...
โชคดีของทุกท่านที่มีคนค้นพบวิธีทำแบบ "ง่าย ๆ" เมื่อไม่นานมานี้เอง ซ้ำยังทำเป็น Add-on ตามมาอีกมากมาย ก็เลยได้มาเขียนนี่แหล่ะ
อะไรคือการ "ดูดฝุ่น"
เรื่องมันเริ่มมาจาก... ตั้งแต่ Firefox 3.0 เป็นต้นมา ได้มีการเปลี่ยนรูปแบบการเก็บข้อมูลใหม่ จากไฟล์ Text ธรรมดา ๆ ไปเป็นระบบ Database ที่ชื่อ SQLite ทำให้ Firefox ทำงานกับข้อมูลมหาศาลได้รวดเร็วขึ้น เห็นได้จากการที่ Firefox 3.0 มีการตั้ง History ไว้ถึง 90 วัน (จากเดิม 9 วันในรุ่นก่อนหน้า) และยังทำให้ทาง Mozilla กล้าใส่ลูกเล่น Awesome Bar ซึ่งต้องใช้การค้นหาข้อมูลอย่างหนักหน่วงลงไปได้อย่างสนิทใจอีกด้วย
แต่... ระบบฐานข้อมูลนั้นมีจุดอ่อน นั่นก็คือ เมื่อมีการลบข้อมูลออกไปจะทำให้เกิดช่องว่างขึ้นมา และยิ่งมีการลบบ่อยก็ยิ่งเกิดช่องว่างกระจายไปทั่วฐานข้อมูล ซึ่งไอ้ช่องว่างพวกนี้มันก็ไม่ต่างอะไรกับฟองอากาศที่กินพื้นที่ในขวด ต่างกันตรงที่ขวดมันขนาดเท่าเดิม แต่ฐานข้อมูลมันจะใหญ่ขึ้นเรื่อย ๆ
โดยเฉพาะ Places.sqlite ซึ่งเก็บ Bookmarks กับ History (จนถึงพฤติกรรมของ Awesome bar) จะมีขนาดใหญ่มากเป็นพิเศษ และถ้าใหญ่เกินไปจะส่งผลให้ Awesome bar ทำงานช้าลง จนไปถึงทำให้ Firefox อืดไปทั้งตัวเลยก็ได้
ดังนั้นเราจึงต้องดูดฟองอากาศพวกนี้ออก (ถ้าพูดตามตรงคือเลื่อนข้อมูลให้มาอยู่ติดกันน่ะแหล่ะ) แล้วจะทำยังไงล่ะ?
วิธีที่ 1 : ใช้คำสั่ง Sqlite ตรง ๆ (ยากมาก ข้ามไปอ่านวิธีอื่นเหอะ)
วิธีนี้เป็นวิธีแรกที่ได้รับการเผยแพร่ แต่มันค่อนข้างยากสำหรับคนทั่วไป (โดยเฉพาะคนที่เกิดไม่ทันใช้ DOS) วิธีการคือ...
- ไปโหลด SQLite 3 มาจาก http://www.sqlite.org/download.html
- Unzip sqlite3.exe ไปไว้ที่โฟลเดอร์ Profile ที่มีไฟล์ .sqlite อยู่ (%appdata%\Mozilla\Firefox\Profiles แล้วเข้าไปที่โฟลเดอร์ย่อยของ Profile อีกที)
- ปิด Firefox ให้เรียบร้อย (ถ้าปิดไม่เรียบร้อยก็ไม่ตาย แต่มันจะไม่ได้อะไรเลย)
- ใช้ Command Prompt เข้าไปที่โฟลเดอร์ดังกล่าว แล้วพิมพ์คำสั่ง..
sqlite3 ชื่อไฟล์.sqlite VACUUM
โดย ชื่อไฟล์.sqlite หมายถึง ไฟล์ Sqlite ที่ต้องการดูดฝุ่น เช่น Places.sqlite
- จะไม่มีอะไรเกิดขึ้นเลย นอกจากอาการค้างไปพักนึง และถ้าได้ผล ขนาดไฟล์ดังกล่าวจะเล็กลง
และจากคำสั่ง SQLite ที่ชื่อ VACUUM นี่แหล่ะ ผมจึงเรียกวิธีนี้ว่า "ดูดฝุ่น"
วิธีที่ 2 : ใช้คำสั่งจากในตัว Firefox (ไม่ยาก แต่อย่าก็อปไม่ครบละกัน)
เนื่องจากในตัว Firefox ก็มี SQlite อยู่แล้ว (ถึงได้อ่านเขียนไฟล์ SQLite ได้ไงล่ะ) จึงมีวิธีลัดให้ Firefox ใช้คำสั่ง Vacuum กับฐานข้อมูลด้วยตัวมันเองอยู่ด้วย ซึ่งมีผู้ค้นพบเมื่อเร็ว ๆ นี้นี่เอง
- เปิด Error Console ของ Firefox ขึ้นมาครับ อยู่ในเมนู Tools นั่นแหล่ะ หรือจะใช้คีย์ลัด Ctrl+Shift+J เรียกมาก็ได้
- ตรงช่อง Code : (ต้นฉบับ) ให้ใส่โค้ดข้างล่างนี้ลงไป ก็อปให้หมดล่ะ ขึ้นต้น Components ลงท้ายด้วย ("VACUUM"); และต้องให้อยู่ในบรรทัดเดียว
Components.classes["@mozilla.org/browser/nav-history-service;1"].getService(Components.interfaces.nsPIPlacesDatabase).DBConnection.executeSimpleSQL("VACUUM");
- ใส่แล้วก็กด Evaluate (หาค่า) แล้ว Firefox จะค้างไปพักนึง ให้รอจนกว่าจะเลิกค้างครับ (อาจจะนานสักหน่อย ให้อดทนไว้ เพราะถ้าไปยุ่งอะไรกับมันตอนนี้ อาจมีพัง
)
- ถ้าได้ผล ขนาดไฟล์ Places.sqlite จะลดลงครับ
วิธีที่ 3 : ใช้ Add-ons
หลังจากมีคนค้นพบวิธีที่ 2 ไม่นานนัก (แค่ 3 - 4 วันเองมั้ง) ก็มีคนทำ Add-on จากวิธีที่ 2 มาให้ใช้กันสะดวก ๆ ถึง 3 ตัวแล้ว แต่ตัวที่นิยมที่สุดในระยะเวลาสั้น ๆ คือ Vacuum Places Improved
วิธีใช้ Add-on ตัวนี้ไม่มีอะไรมาก แค่คลิกที่ไอค่อนของมันที่ Status bar แล้วรอสักครู่จนมันบอกว่า "ดูดเสร็จแหล่ว" ก็โอเค นอกจากนั้นยังสามารถตั้งได้ว่า จะให้มันดูดฝุ่นโดยอัตโนมัติทุก ๆ กี่ครั้งที่เปิด Firefox ขึ้นมา
Add-on ตัวนี้ยังอยู่ในขั้นทดลอง (เนื่องจากเพิ่งออกมาได้ไม่นาน) แต่หลายคนลองใช้แล้วไม่พบปัญหาอะไรครับ
ส่งท้าย
ถ้ามาถึงตรงนี้แล้วยังงงว่า ไอ้ที่ผมกล่าวมาทั้งหมดมันใช้ทำอะไรกันแน่? ก็ดูผลตรงนี้ครับ
นี่เป็นภาพจากการ Vacuum (ดูดฝุ่น) ครั้งแรก กับฐานข้อมูลที่สะสมมาตั้งแต่สมัย Firefox 3.0 ออกใหม่ ๆ จะเห็นว่าขนาดไฟล์ลดไปเกือบ 10 เม็กทีเดียว แล้วลองนึกภาพการงมเข็มในสระน้ำที่เล็กลงดู มันจะหาเร็วขึ้นใช่มั้ยล่ะ
สรุปคือ... เมื่อดูดฝุ่นให้ฐานข้อมูลแล้ว Firefox จะทำงานเร็วขึ้น อาจจะเปิดเร็วขึ้น อาจจะเบาขึ้น ฉิวขึ้น ก็แล้วแต่ว่าฐานข้อมูลของคุณมันหมักหมมอะไรไว้แค่ไหน
ถ้าถามว่าต้องทำบ่อยแค่ไหน? ก็ไม่ต้องบ่อยครับ เพราะถ้าไม่มีช่องว่างเกิดขึ้นในฐานข้อมูลมากมาย ทำไปก็ไม่ได้อะไร รอสะสมมาก ๆ สัก 50 - 90 วัน หรือสักปีนึงแล้วทำทีเดียวดีกว่า สะใจ
และถ้าสงสัยว่า เอ... นี่มันก็เหมือนการ Defrag ฮาร์ดดิสก์ใช่มั้ย
ก็ขอตอบว่า เป๊ะเลยครับ
ข้อมูลอ้างอิง
- Vacuum your Firefox databases for better performance - Mozilla Links
- Vacuum Firefox databases for better performance, now with no restart - Mozilla Links
ป.ล. Firefox ตั้งแต่ 2.0 ลงไป จะใช้วิธีไหน ๆ ก็ไม่ได้นะครับ เพราะไม่ได้ใช้ SQLite



#1 By Nancy อารมณ์ดี on 2009-08-30 16:06