kiến thức Tổng hợp những addon chất cho Firefox / Chromium

Floorp vẫn còn buggy lắm :angry:

Mở profile mới Floorp, vào about:preferences#userjs, apply 1 cái nào đó trong list, kết quả là vào profile folder không hề thấy có file user.js nào, khởi động lại Floorp rồi vào about:config cũng chưa sửa key nào :burn_joss_stick:
nói đúng hơn là nó không nhận user.js bác ạ, em đưa file user.js vào nó có nhận quái đâu
 
Floorp vẫn còn buggy lắm :angry:

Mở profile mới Floorp, vào about:preferences#userjs, apply 1 cái nào đó trong list, kết quả là vào profile folder không hề thấy có file user.js nào, khởi động lại Floorp rồi vào about:config cũng chưa sửa key nào :burn_joss_stick:
Chắc cứ báo lỗi cho ông tác giả ấy, ông ấy giờ đang còn mạnh chân khỏe tay để ông ấy fix: https://github.com/Floorp-Projects/Floorp/issues

Mình thì xem qua Fasterfox, dùng config ở #1 vẫn an toàn hơn.
Ba cái này ngon bổ không có tác dụng phụ.
 
báo lỗi cho ông tác giả
@nhoxbuondkny

Thật ra tạo 1 file user.js trong profile folder trước sau đó vào about:preferences#userjs là apply các file trong list được các bác ạ.


Cái khóa này em thấy đáng để suy ngẫm.

Riêng về vấn đề giảm sự cạnh tranh tài nguyên máy của các firefox process/thread em cũng có quan tâm. Dưới đây là 1 số quan sát:

Vào about:config sẽ thấy content.notify.interval có giá trị mặc định là 120k micro giây. Tức là từ lúc initial paint, cứ mỗi 0,12 giây thì Firefox reflow 1 lần cho đến khi tải xong.

Giả :
  • ti là thời điểm thực hiện initial paint (ti sẽ = thời gian tải DOM + thời gian delay, vd: nếu nglayout.initialpaint.delay = 2 giây thì ti = tDOMContentLoaded + 2)
  • tf là thời điểm tải xong page resource

thì từ lúc initial paint đến lúc tải xong Firefox sẽ reflow số lần là:
(tf - ti)/0,12
Nếu hiệu số trên tử số chỉ cần là vài giây thì tổng số lần reflow vẫn là hàng chục lần.

Cũng từ phân số trên suy ra nếu chỉ muốn giảm tổng số lần reflow xuống thấp nhất có 2 cách là tăng content.notify.interval hoặc nglayout.initialpaint.delay lên thật cao, vài chục giây chẳng hạn.

Ngoài ra còn cách thứ 3 là chỉnh cái khóa content.notify.backoffcount về bằng 0.

3 cách đó đều giới hạn số lần reflow về con số tối thiểu nhưng lại đem lại trải nghiệm không hề giống nhau. Cụ thể là việc tăng thời gian delay initial paint sẽ khác hoàn toàn với tăng reflow interval hoặc giảm reflow backoff count.

Cái khác ở đây là perceived speeeeeeeeeeeed.

Chọn trang wired.com làm ví dụ đi.

Nếu delay paint thì sẽ phải đợi nhưng nếu chọn 2 cách kia thì sẽ thấy ngay nội dung text và style căn bản của page (vd title, body bài viết, navigation items...) chỉ còn chờ ảnh load xong và hiện ra. Rõ ràng 2 cách sau khiến mình đỡ sốt ruột hơn và tiết kiệm thời gian vì đọc được ngay text (thực tế duyệt web đôi khi cũng chỉ cần đọc text).

Mấy năm trước Mozilla đã có dự án Faster startup firstpaint cũng hoàn toàn là để cải thiện cái perceived speed này (nhưng là lúc khởi động Firefox), tất nhiên nó không làm firefox khởi động nhanh hơn nhưng stop hoàn toàn được việc các bà các chị các mẹ click 1 cái chưa thấy firefox mở bèn ckick thêm vài cái nữa, lúc sau nó mở ra 1 đống cửa sổ.
 
Dạo này có bác nào không xem youtube = mpv được nữa không?
Mình skip tới đoạn mình muốn xem thì load rất lâu, load xong thì chỉ có tiếng, còn hình thì đứng yên.
Đã cập nhật yt-dlp, ffmpeg, mpv mới nhất rồi
 
@nhoxbuondkny

Cái khóa này em thấy đáng để suy ngẫm.

Riêng về vấn đề giảm sự cạnh tranh tài nguyên máy của các firefox process/thread em cũng có quan tâm. Dưới đây là 1 số quan sát:

Vào about:config sẽ thấy content.notify.interval có giá trị mặc định là 120k micro giây. Tức là từ lúc initial paint, cứ mỗi 0,12 giây thì Firefox reflow 1 lần cho đến khi tải xong.

Giả :
  • ti là thời điểm thực hiện initial paint (ti sẽ = thời gian tải DOM + thời gian delay, vd: nếu nglayout.initialpaint.delay = 2 giây thì ti = tDOMContentLoaded + 2)
  • tf là thời điểm tải xong page resource

thì từ lúc initial paint đến lúc tải xong Firefox sẽ reflow số lần là:
(tf - ti)/0,12
Nếu hiệu số trên tử số chỉ cần là vài giây thì tổng số lần reflow vẫn là hàng chục lần.

Cũng từ phân số trên suy ra nếu chỉ muốn giảm tổng số lần reflow xuống thấp nhất có 2 cách là tăng content.notify.interval hoặc nglayout.initialpaint.delay lên thật cao, vài chục giây chẳng hạn.

Ngoài ra còn cách thứ 3 là chỉnh cái khóa content.notify.backoffcount về bằng 0.

3 cách đó đều giới hạn số lần reflow về con số tối thiểu nhưng lại đem lại trải nghiệm không hề giống nhau. Cụ thể là việc tăng thời gian delay initial paint sẽ khác hoàn toàn với tăng reflow interval hoặc giảm reflow backoff count.

Cái khác ở đây là perceived speeeeeeeeeeeed.

Chọn trang wired.com làm ví dụ đi.

Nếu delay paint thì sẽ phải đợi nhưng nếu chọn 2 cách kia thì sẽ thấy ngay nội dung text và style căn bản của page (vd title, body bài viết, navigation items...) chỉ còn chờ ảnh load xong và hiện ra. Rõ ràng 2 cách sau khiến mình đỡ sốt ruột hơn và tiết kiệm thời gian vì đọc được ngay text (thực tế duyệt web đôi khi cũng chỉ cần đọc text).

Mấy năm trước Mozilla đã có dự án Faster startup firstpaint cũng hoàn toàn là để cải thiện cái perceived speed này (nhưng là lúc khởi động Firefox), tất nhiên nó không làm firefox khởi động nhanh hơn nhưng stop hoàn toàn được việc các bà các chị các mẹ click 1 cái chưa thấy firefox mở bèn ckick thêm vài cái nữa, lúc sau nó mở ra 1 đống cửa sổ.
Hiện mình đang test thử với thông số này thấy khá ổn, phần content.notify.interval để vậy cho chắc chứ content.notify.backoffcount=0 là đủ, còn nglayout.initialpaint.delay sẽ thử cho xuống 250 (chính là thông số của Firefox thời 3-4.0) xem có khác biệt không:

nglayout.initialpaint.delay2000
nglayout.initialpaint.delay_in_oopif2000
content.notify.backoffcount0
content.notify.interval2000000
content.notify.ontimertrue

Đây là thông số mới, sẽ cập nhập bài nglayout để hoàn thiện nó sau khi thấy cái nào hiệu quả nhất, mục đích của tối ưu này là khiến Firefox chơi tốt với Dark Reader (nếu cần) cũng như tải trang không bị hiện tượng nhấp nháy mà một số bạn bị.

Thông số trải nghiệm 1 (chỉ reflow 2 lần tối đa) cứ mỗi 2s:
nglayout.initialpaint.delay250
nglayout.initialpaint.delay_in_oopif250
content.notify.backoffcount2
content.notify.interval2000000
content.notify.ontimertrue

Thông số trải nghiệm 2 (không reflow):
nglayout.initialpaint.delay250
nglayout.initialpaint.delay_in_oopif250
content.notify.backoffcount0
content.notify.interval2000000
content.notify.ontimertrue
 
Dạo này có bác nào không xem youtube = mpv được nữa không?
Mình skip tới đoạn mình muốn xem thì load rất lâu, load xong thì chỉ có tiếng, còn hình thì đứng yên.
Đã cập nhật yt-dlp, ffmpeg, mpv mới nhất rồi
Mình vẫn xem bình thường, vấn đề mình nghĩ là nằm ở độ phân giải của Youtube và hiện tại VN đang đứt cáp quốc tế, nghĩa là nên dùng DNS có khả năng gửi ECS như NextDNS, GoogleDNS, Cloudflare Zero Trust để Youtube trả lại video nằm ở VN cho cải thiện tối đa.

Bạn thử về config:
 
Dạo này có bác nào không xem youtube = mpv được nữa không?
Mình skip tới đoạn mình muốn xem thì load rất lâu, load xong thì chỉ có tiếng, còn hình thì đứng yên.
Đã cập nhật yt-dlp, ffmpeg, mpv mới nhất rồi
Xác nhận vụ này, nhà mạng 7 chữ.
Thậm chí xem mình thường không skip nó buffer không load được mặc dù mình đang để protocol là dash.
Tuy nhiên mình dùng tool phá DPI để mpv đi qua local proxy thì speed lại mượt mà.
Cái này đầu "cá mập" các nhà mạng được chỉ đạo gì đó. :doubt:
 
Cái này đầu "cá mập" các nhà mạng được chỉ đạo gì đó. :doubt:
Nhà mạng cắn đứt cáp rồi nên chậm thôi. :D

Tuy nhiên mình dùng tool phá DPI để mpv đi qua local proxy thì speed lại mượt mà.
Phát hiện này hay này, nếu hướng dẫn cụ thể mình cho lên #1 chắc giải quyết được vấn đề bóp mạng, trước giải thích mà vẫn quên một ý nữa là nhà mạng cũng có thể bóp googlevideo.com hoặc c.youtube.com là hai tên miền phát video của Youtube.
 
Hiện mình đang test thử với thông số này thấy khá ổn, phần content.notify.interval để vậy cho chắc chứ content.notify.backoffcount=0 là đủ, còn nglayout.initialpaint.delay sẽ thử cho xuống 250 (chính là thông số của Firefox thời 3-4.0) xem có khác biệt không:

nglayout.initialpaint.delay2000
nglayout.initialpaint.delay_in_oopif2000
content.notify.backoffcount0
content.notify.interval2000000
content.notify.ontimertrue

Đây là thông số mới, sẽ cập nhập bài nglayout để hoàn thiện nó sau khi thấy cái nào hiệu quả nhất, mục đích của tối ưu này là khiến Firefox chơi tốt với Dark Reader (nếu cần) cũng như tải trang không bị hiện tượng nhấp nháy mà một số bạn bị.

Thông số trải nghiệm 1 (chỉ reflow 2 lần tối đa) cứ mỗi 2s:
nglayout.initialpaint.delay250
nglayout.initialpaint.delay_in_oopif250
content.notify.backoffcount2
content.notify.interval2000000
content.notify.ontimertrue

Thông số trải nghiệm 2 (không reflow):
nglayout.initialpaint.delay250
nglayout.initialpaint.delay_in_oopif250
content.notify.backoffcount0
content.notify.interval2000000
content.notify.ontimertrue
Post trước là em so sánh khác biệt giwxa các phương án thôi chứ tăng timer interval lên quá cao hoặc giảm backoff count về 0 thì cũng hơi extreme. Vì có lẽ sẽ có những case mà khi xem/cuộn page sẽ bị phá style/functions vì chưa render tài nguyên mới tải thêm.
 
Mình vẫn xem bình thường, vấn đề mình nghĩ là nằm ở độ phân giải của Youtube và hiện tại VN đang đứt cáp quốc tế, nghĩa là nên dùng DNS có khả năng gửi ECS như NextDNS, GoogleDNS, Cloudflare Zero Trust để Youtube trả lại video nằm ở VN cho cải thiện tối đa.

Bạn thử về config:
Xác nhận vụ này, nhà mạng 7 chữ.
Thậm chí xem mình thường không skip nó buffer không load được mặc dù mình đang để protocol là dash.
Tuy nhiên mình dùng tool phá DPI để mpv đi qua local proxy thì speed lại mượt mà.
Cái này đầu "cá mập" các nhà mạng được chỉ đạo gì đó. :doubt:
quan trọng là xem bth bằng trình duyệt vẫn ổn ạ, em xài config gốc của bác từ hồi đó tới giờ, không hiểu sao giờ lại bị
 
quan trọng là xem bth bằng trình duyệt vẫn ổn ạ, em xài config gốc của bác từ hồi đó tới giờ, không hiểu sao giờ lại bị
Thím thử cách này của ad chưa? Mình vừa test xong, tua tới lui vẫn mượt mà. Để tối về thử test mạng A7 xem sao. Mà dạo này tối hay lag nhỉ.
Cái này mình quên béng mất là hiện tại phía yt-dlp họ có cách dùng PhantomJS để phá nsig của Youtube, khiến Youtube nó nghĩ rằng người dùng xem từ trình duyệt web, tác dụng thì mình cũng không rõ cơ mà cứ nên thử:



Thế là xong, không cần làm gì thêm yt-dlp sẽ tự động biết cách sử dụng phantomjs khi nó cảm thấy cần thiết.

Ngoài ra các bạn cũng nên cập nhập yt-dlp sang bản Nightly vì hiện tại bản stable đã rất lâu không cập nhập, mình đang xài Nightly và nó vá rất nhiều lỗi so với stable, ông tác giả chưa ra stable là vì hiện tại Youtube đang thay đổi rất nhiều nên ông ấy ngâm dấm để tránh phía Youtube nằm vùng phá hoại. (cách đây tầm 2 tháng Youtube thay đổi liên tục gây lỗi yt-dlp)

Tải tại: https://github.com/yt-dlp/yt-dlp-nightly-builds/releases
 
Post trước là em so sánh khác biệt giwxa các phương án thôi chứ tăng timer interval lên quá cao hoặc giảm backoff count về 0 thì cũng hơi extreme. Vì có lẽ sẽ có những case mà khi xem/cuộn page sẽ bị phá style/functions vì chưa render tài nguyên mới tải thêm.
Cũng không sao đâu, thiết lập tương tự này mình dùng nửa năm nay rồi chưa thấy trang nào ảnh hưởng tới trải nghiệm, khác mỗi backoffcount = -1. Quan trọng là không bao giờ thấy hiện tượng nhấp nháy gì khi dùng Dark Reader và thấy tải trang rất nhẹ nhàng, hiện mình còn áp vài cái tối ưu ép Firefox chạy ở FPS thấp đi (layout.frame_rate=49, không bao giờ chơi game/xem phim trình duyệt thì bật lên cũng ok) cho bớt render mấy cái ảnh động thường xuyên, cơ mà cái này khiến game chơi trên Firefox bị chậm đi do FPS không lên 60 được:

nglayout.initialpaint.delay2000
nglayout.initialpaint.delay_in_oopif2000
content.notify.backoffcount-1
content.notify.interval2000000
content.notify.ontimertrue
 
quan trọng là xem bth bằng trình duyệt vẫn ổn ạ, em xài config gốc của bác từ hồi đó tới giờ, không hiểu sao giờ lại bị
Thế thì là do mạng rồi, để mình quay một cái video, mạng là VNPT cùi bép: https://streamable.com/lf8guz

Vấn đề này thì cần tìm hiểu về thiết lập DNS mà bạn đang dùng, hiện tại bạn dùng cái nào trong danh sách này cho toàn máy tính:
  • Mặc định nhà mạng
  • 1.1.1.1 CF
  • GoogleDNS
  • NextDNS
Nên né 1.1.1.1 vì thằng này nó sẽ khiến máy chủ googlevideo trả về vị trí máy chủ rất xa Việt Nam, nếu đứt cáp hay sự cố nghẽn mạng nước ngoài thì sẽ bị ảnh hưởng, còn nếu nó trả về vị trí ngay tại Việt Nam thì sẽ khác xa.
 
Thế thì là do mạng rồi, để mình quay một cái video, mạng là VNPT cùi bép: https://streamable.com/lf8guz

Vấn đề này thì cần tìm hiểu về thiết lập DNS mà bạn đang dùng, hiện tại bạn dùng cái nào trong danh sách này cho toàn máy tính:
  • Mặc định nhà mạng
  • 1.1.1.1 CF
  • GoogleDNS
  • NextDNS
Nên né 1.1.1.1 vì thằng này nó sẽ khiến máy chủ googlevideo trả về vị trí máy chủ rất xa Việt Nam, nếu đứt cáp hay sự cố nghẽn mạng nước ngoài thì sẽ bị ảnh hưởng, còn nếu nó trả về vị trí ngay tại Việt Nam thì sẽ khác xa.
Em vừa vô đổi DNS mặc định nhà mạng thành GoogleDNS 8888 + xài PhantomJS như thread chỉ thì giờ load bình thường rồi, không hiểu tại sao nhỉ :cautious:
 
Em vừa vô đổi DNS mặc định nhà mạng thành GoogleDNS 8888 + xài PhantomJS như thread chỉ thì giờ load bình thường rồi, không hiểu tại sao nhỉ :cautious:
Có thể do thời gian gần đây Viettel định tuyến không ổn định nên nhiều khi nó sẽ bị mất kết nối chẳng hạn, vậy gây ra hiện tượng Youtube thi thoảng load hỏng. Mình sẽ update lại file mpv.conf mới nhất để cải thiện phần nào thuật toán retry của MPV.

Chi tiết bạn nên vào thread này đọc vì ở đó nhiều người bàn về DNS của từng nhà mạng hơn: https://voz.vn/t/tat-tan-tat-ve-dich-vu-nextdns.522718/post-27069687
 
Có thể do thời gian gần đây Viettel định tuyến không ổn định nên nhiều khi nó sẽ bị mất kết nối chẳng hạn, vậy gây ra hiện tượng Youtube thi thoảng load hỏng. Mình sẽ update lại file mpv.conf mới nhất để cải thiện phần nào thuật toán retry của MPV.

Chi tiết bạn nên vào thread này đọc vì ở đó nhiều người bàn về DNS của từng nhà mạng hơn: https://voz.vn/t/tat-tan-tat-ve-dich-vu-nextdns.522718/post-27069687
1691656516674.png


Nguyên nhân Viettel gần đây hơi lag
 
View attachment 2007124

Nguyên nhân Viettel gần đây hơi lag
Có cài này thì chắc chắn rồi, giải pháp là dùng DNS xịn xò như NextDNS (tier 1), GoogleDNS+ECS(tier 2), Cloudflare Zero Trust+ECS(tier 2), 9.9.9.12+ECS(tier 3) kèm dnsproxy, dnscrypt, YogaDNS cho nó gửi ECS để lấy máy chủ ở Việt Nam là vượt vũ môn được nhé.

Tất cả đều có trong thread trên. NextDNS hiện đang bị quá tải nên dùng tạm GoogleDNS cũng ok.

Và buộc phải là DoT, DoH, QUIC ví dụ google.dns hay xxx.cloudflare-gateway.com đổ lên nhé DNS trần trụi dạng kiểu 8.8.8.8 hay 1.1.1.1 nó không cho gửi ECS đâu.
 
Có cài này thì chắc chắn rồi, giải pháp là dùng DNS xịn xò như NextDNS (tier 1), GoogleDNS+ECS(tier 2), Cloudflare Zero Trust+ECS(tier 2), 9.9.9.12+ECS(tier 3) kèm dnsproxy, dnscrypt, YogaDNS cho nó gửi ECS để lấy máy chủ ở Việt Nam là vượt vũ môn được nhé.

Tất cả đều có trong thread trên. NextDNS hiện đang bị quá tải nên dùng tạm GoogleDNS cũng ok.

Và buộc phải là DoT, DoH, QUIC ví dụ google.dns hay xxx.cloudflare-gateway.com đổ lên nhé DNS trần trụi dạng kiểu 8.8.8.8 hay 1.1.1.1 nó không cho gửi ECS đâu.
Xin hướng dẫn thực hiện các tier với bạn
 
Back
Top