Khắc phục lỗi Firefox 3 chạy chậm trên Linux/Mac OS X

Standard

Nếu bạn là tín đồ trung thành của Firefox, ắt hẳn bạn đã sử dụng phiên bản 3.0 ngay từ những ngày đầu tiên. Đã gần một năm kể từ khi Firefox 3 phát hành, và ngày càng nhiều người dùng Linux cũng như Mac OS X than phiền về tốc độ của trình duyệt của Mozilla. Bài viết sẽ hướng dẫn bạn tối ưu để mang Firefox 3 trở về “thuở ban đầu”.

Bài viết này chứa một số thông tin chuyên sâu về hệ thống. Nếu bạn không hiểu, đừng ngần ngại đặt câu hỏi trong phần bình luận. Bạn cũng có thể gửi bài này cho những người am hiểu máy tính và nhờ họ giải thích. Chắc hẳn họ cũng rất quan tâm đấy!

Nguyên nhân

Kể từ phiên bản 3.0, thanh địa chỉ của Firefox được gọi là Awesome bar (thanh kinh hoàng). Bạn chỉ cần gõ vài kí tự vào thanh địa chỉ, những trang Web phù hợp nhất sẽ hiện ra. Để giải quyết vấn đề này, Firefox đã dùng đến cơ sở dữ liệu (CSDL) để lưu danh sách các trang Web đã duyệt, thay vì dùng XML như trước đây. Nhóm phát triển của Mozilla chọn SQLite là cơ sở dữ liệu gọn nhẹ nhất hiện nay.

Để đảm bảo tính toàn vẹn, SQLite dùng hàm fsync khi lưu dữ liệu. Hàm này yêu cầu hệ điều hành ghi toàn bộ nội dung trong vùng nhớ đệm trước khi tiến hành các thao tác khác. Trong quá trình này, hệ thống có thể ngưng mọi hoạt động khác.

Nếu bạn sử dụng Firefox càng lâu và duyệt Web càng nhiều, CSDL càng lớn và quá trình này kéo dài hơn bình thường. Rất may mắn là Windows “mặc kệ” yêu cầu fsync, nên Firefox trên Windows không bị ảnh hưởng nhiều. Trên Linux (và Mac OS X – dựa trên FreeBSD), vấn đề khá trầm trọng, nhất là khi bạn sử dụng laptop với ổ cứng không nhanh lắm!

Khắc phục

Hiện giờ, cách khắc phục duy nhất là… dọn dẹp CSDL này. Đã có nhiều tranh luận về SQLite và fsync, nhưng nhóm phát triển Firefox giữ nguyên luận điểm của mình: thà chạy chậm còn hơn mất dữ liệu và nghe khách hàng than phiền!

Để dọn dẹp CSDL, cách đơn giản nhất là xoá hẳn Firefox và cài đặt lại, hoặc tạo Profile mới (hướng dẫn bằng tiếng Anh có tại kb.mozillazine.org – cách chuyển dữ liệu sang Profile mới cũng có tại địa chỉ này). Như vậy bạn sẽ xoá bỏ tất cả, chỉ giữ lại những gì cần thiết.

Cách khác, được giới thiệu dưới đây, sẽ dọn dẹp CSDL cho bạn mà không cần tạo Profile mới: dùng lệnh VACUUM để tối ưu CSDL. Chú ý: hãy thoát Firefox trước khi tiến hành các thao tác dưới đây.

Trên Linux (Ubuntu)

Nếu máy bạn chưa có SQLite 3 thì bạn cần phải cài đặt:

sudo apt-get install sqlite3

Gõ lệnh sau để tối ưu tất cả CSDL trong Firefox:

for f in ~/.mozilla/firefox/*/*.sqlite; do sqlite3 $f ‘VACUUM;’; done

Lệnh trên nén các CSDL SQLite để tăng tốc độ truy xuất.

Trên Mac OS X (Leopard 10.5.6)

SQLite 3 mặc định đã được cài đặt. Bạn chỉ việc gõ lệnh sau:

for f in ~/Library/Application\ Support/Firefox/Profiles/*/*.sqlite; do sqlite3 "$f" ‘VACUUM;’; done

Trên Windows

Bạn không chịu ảnh hưởng rõ rệt trên Windows, nhưng điều này không ngăn cản bạn tối ưu hoá CSDL của mình. Hãy tải SQLite tại www.sqlite.org và giải nén vào thư mục C:\bin chẳng hạn, sau đó mở cửa sổ dòng lệnh, chuyển vào thư mục Profile của Firefox (có dạng C:\Documents and Settings\TÊN ĐĂNG NHẬP\Application Data\Mozilla Firefoxucsufcv.default) bằng lệnh CD và gõ:

for %f in (*.sqlite) do C:\bin\sqlite3.exe %f "VACUUM;"

Nâng cao

Nếu bạn đã hài lòng, hãy đọc một bài khác ở TTCN. Bạn chưa hài lòng, và cảm thấy đủ tự tin để đi tiếp? Chúng ta sẽ tìm hiểu thêm tập tin places.sqlite, trái tim của Awesome bar. Phần này được tham khảo từ blog của Ryan Schwartz.

Trong CSDL, mỗi bản ghi có nhiều thông tin khác nhau. Khi bạn truy cập một địa chỉ Web, Firefox không chỉ lưu lại URL mà còn cả số lần truy cập, tên trang Web… Không những vậy, còn có một thông tin trong trường hidden ghi chú rằng bạn chưa hề xem trang này (thí dụ các iframe, live bookmark…). Đây là những thông tin hoàn toàn không có ích với bạn trong lúc này, hãy xoá chúng đi!

user$ sqlite3 places.sqlite
SQLite version 3.4.0
Enter ".help" for instructions
sqlite> DELETE FROM moz_places WHERE hidden=1 AND url LIKE ‘http%’;
sqlite> .quit

Sau khi gõ xong các lệnh được tô đậm, kích thước CSDL của bạn sẽ giảm đi đáng kể. Tác giả bài viết này đã giảm tập tin places.sqlite từ 62 MB xuống còn 2,5 MB và Firefox chạy nhanh chẳng kém gì Safari trên Mac OS X.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s