Ảnh chỉ mang tính minh hoạ.

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 Firefox\0ucsufcv.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.

Hải Nam.




Bình luận

  • TTCN (6)
Trần Kim Hiếu  1

Cá tháng 4

Đây là 1 con cá tháng 4 to đùng của TTCN

Quang Trung  22192

Có câu lệnh nào chuyển Firefox thành Safari ko? Big Grin

Hải Nam  30903

rm -rf firefox;sudo apt-get install safari Big Grin

Hải Nam  30903

Bây giờ qua 1/4 rồi nhé, bài viết vẫn vậy, có con cá nào đâu Big Grin Firefox chạy chậm trên Linux, những người dùng thường xuyên đều biết điều này!

Đình Quân  228

Về cơ bản thì hiệu quả khi tối ưu trên Windows không nhiều, nếu ko để ý thì thấy không có thay đổi mấy.
Thủ thuật này thật sự hiệu quả trên Mac, tốc độ nhanh hơn hẳn.

itmanvn  2

chính xác, xài FF3 trên Ubuntu càng ngày càng chậm, ngoài việc tối ưu DB của SQLite3 thì còn có thể làm thêm 1 tut nữa là:

[quote]Bạn đều biết rằng tốc độ truy xuất của Ram nhanh hơn với đĩa cứng rất nhiều. Vì vậy nếu ta mount phân vùng tmp ở ram thì sẽ tăng tốc độ truy xuất tạm thời.

Đặt biệt firefox có thể thay đổi thư mục cache để cái file lưu trữ tạm thời lấy được nhanh hơn

Để tạo một phân vùng trên Ram và mount ở tmp ta thêm dòng sau vào file

/etc/fstab

tmpfs /tmp tmpfs size=512M,nr_inodes=10k,mode=1777 0 0

Bạn có thể dùng lệnh
echo "tmpfs /tmp tmpfs size=512M,nr_inodes=10k,mode=1777 0 0" | sudo tee -a /etc/fstab
để làm điều này.
Tiếp theo bạn cần chỉnh thưc mục cache của Firefox lại để đặt tại tmp.
gõ about:config vào address bar.
Bấm phải vào các mục ở dưới chọn New->String
Phần name điền
browser.cache.disk.parent_directory
và phần value điền /tmp
Sau đó restart máy để có tác dụng. Tuy nhiên với cách này thì cache sẽ không được lưu lại mỗi lần bạn restart máy.[/quote]

Từ [url=http://saylinux.wordpress.com/2009/04/25/mot-vai-meo-nho-tang-toc-firefox-tren-ubunu/]say Linux! blog[/url]