diff --git a/Fastfox.js b/Fastfox.js index 60c0323..798701b 100644 --- a/Fastfox.js +++ b/Fastfox.js @@ -11,29 +11,30 @@ * Fastfox * * "Non ducor duco" * * priority: speedy browsing * - * version: 106 * + * version: 107 * * url: https://github.com/yokoffing/Betterfox * ***************************************************************************************/ -/**************************************************************************************** - * * - * [NOTE] For best performance on older hardware, you will need to test * - * these settings individually, especially Webrender. * - * * -****************************************************************************************/ - // PREF: force enable all Webrender prefs // [1] https://hacks.mozilla.org/2017/10/the-whole-web-at-maximum-fps-how-webrender-gets-rid-of-jank/ // [2] https://wiki.mozilla.org/Platform/GFX/WebRender_Where // [3] https://www.reddit.com/r/firefox/comments/fo1jwz/make_firefox_faster/flhh5l2/ -//user_pref("gfx.webrender.all", true); +//user_pref("gfx.webrender.all", true); // enables WR + additional features +//user_pref("gfx.webrender.enabled", true); // DEFAULT; just enables WR +//user_pref("gfx.webrender.compositor", true); // DEFAULT + //user_pref("gfx.webrender.compositor.force-enabled", true); // PREF: if your hardware doesn't support Webrender, you can fallback to Webrender's software renderer // [NOTE] Both preferences need to be "true" if you're using the software renderer. // [1] https://www.ghacks.net/2020/12/14/how-to-find-out-if-webrender-is-enabled-in-firefox-and-how-to-enable-it-if-it-is-not/ //user_pref("gfx.webrender.software", true); + //user_pref("gfx.webrender.software.opengl", true); -// PREF: Lazy Image Loading +// PREF: GPU-accelerated Canvas2D [NIGHTLY] +// [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1739448 +//user_pref("gfx.canvas.accelerated", true); + +// PREF: enable Lazy Image Loading // https://www.ghacks.net/2020/02/15/firefox-75-gets-lazy-loading-support-for-images/ //user_pref("dom.image-lazy-loading.enabled", true); // DEFAULT @@ -45,26 +46,26 @@ //user_pref("browser.sessionstore.restore_tabs_lazily", true); // DEFAULT // PREF: disable preSkeletonUI on startup -// May set to "true" if your hardware is very old. -//user_pref("browser.startup.preXulSkeletonUI", false); +user_pref("browser.startup.preXulSkeletonUI", false); // PREF: set the minimum interval between session save operations // Increasing this can help on older machines and some websites, as well as reducing writes // [1] https://bugzilla.mozilla.org/1304389 //user_pref("browser.sessionstore.interval", 30000); // [DEFAULT: 15000] -// PREF: JPEG XL image format -user_pref("image.jxl.enabled", true); +// PREF: JPEG XL image format [NIGHTLY] +// [1] https://cloudinary.com/blog/the-case-for-jpeg-xl +//user_pref("image.jxl.enabled", true); -// PREF: about:home startup cache +// PREF: about:home startup cache [NIGHTLY] // A cache for the initial about:home document that is loaded by default at startup // The purpose of the cache is to improve startup performance //user_pref("browser.startup.homepage.abouthome_cache.enabled", true); -// PREF: CSS Masonry Layout +// PREF: CSS Masonry Layout [NIGHTLY] user_pref("layout.css.grid-template-masonry-value.enabled", true); -// PREF: Prioritized Task Scheduling API +// PREF: Prioritized Task Scheduling API [NIGHTLY] // [1] https://blog.mozilla.org/performance/2022/06/02/prioritized-task-scheduling-api-is-prototyped-in-nightly/ // [2] https://medium.com/airbnb-engineering/building-a-faster-web-experience-with-the-posttask-scheduler-276b83454e91 user_pref("dom.enable_web_task_scheduling", true); @@ -74,23 +75,23 @@ user_pref("dom.enable_web_task_scheduling", true); // [2] https://www.youtube.com/watch?v=CWvRA9E0DqU // [3] https://developer.chrome.com/blog/offscreen-canvas/ // [4] https://groups.google.com/a/mozilla.org/g/dev-platform/c/kp9SZL-0wW0 -user_pref("gfx.offscreencanvas.enabled", true); +//user_pref("gfx.offscreencanvas.enabled", true); // DEFAULT FF106+ // PREF: CSS Font Loading API in workers // [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1072107 -user_pref("layout.css.font-loading-api.workers.enabled", true); +//user_pref("layout.css.font-loading-api.workers.enabled", true); // DEFAULT FF106+ -// PREF: enable animation-composition +// PREF: enable animation-composition [NIGHTLY] // [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1785329 // [2] https://bugzilla.mozilla.org/show_bug.cgi?id=1293490 user_pref("layout.css.animation-composition.enabled", true); -// PREF: enable importMaps [FF108+] [NIGHTLY] +// PREF: enable importMaps [FF108+] // [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1688879 // [2] https://github.com/WICG/import-maps#the-basic-idea // [3] https://caniuse.com/import-maps -user_pref("dom.importMaps.enabled", true); -//user_pref("javascript.options.experimental.import_assertions", true); +//user_pref("dom.importMaps.enabled", true); // DEFAULT FF108+ + //user_pref("javascript.options.experimental.import_assertions", true); // PREF: Shadowrealms [NIGHTLY] // [1] https://github.com/tc39/proposal-shadowrealm/blob/main/explainer.md#introduction @@ -103,3 +104,106 @@ user_pref("dom.importMaps.enabled", true); // PREF: Wasm Function References [NIGHTLY] // [1] https://github.com/WebAssembly/function-references/blob/master/proposals/function-references/Overview.md //user_pref("javascript.options.wasm_function_references", true); + +/**************************************************************************** + * SECTION: MAKE FIREFOX FAST * + * [NOTE] The following is not recommended for low-end machines * + * Credit for most of these: * + * https://gist.github.com/RubenKelevra/fd66c2f856d703260ecdf0379c4f59db * + * [NOTE] For best performance on older hardware, you will need to test * + * these settings individually. * +****************************************************************************/ + +/**************************************************************************** + * SECTION: GFX RENDERING TWEAKS * +****************************************************************************/ + +// PREF: Webrender tweaks +// [1] https://www.troddit.com/r/firefox/comments/tbphok/is_setting_gfxwebrenderprecacheshaders_to_true/i0bxs2r/ +user_pref("gfx.webrender.all", true); // enables WR + additional features +user_pref("gfx.webrender.precache-shaders", true); +user_pref("gfx.webrender.compositor", true); // reinforce DEFAULT + //user_pref("gfx.webrender.compositor.force-enabled", true); + +// PREF: GPU-accelerated Canvas2D tweaks +user_pref("gfx.canvas.accelerated", true); +user_pref("gfx.canvas.accelerated.cache-items", 32768); +user_pref("gfx.canvas.accelerated.cache-size", 4096); +user_pref("gfx.content.skia-font-cache-size", 80); + +// PREF: image tweaks +user_pref("image.cache.size", 10485760); +user_pref("image.mem.decode_bytes_at_a_time", 65536); // chunk size for calls to the image decoders +user_pref("image.mem.shared.unmap.min_expiration_ms", 120000); // minimum timeout to unmap shared surfaces since they have been last used +user_pref("layers.gpu-process.enabled", true); // reinforce DEFAULT + //user_pref("layers.gpu-process.force-enabled", true); + +// PREF: increase media cache +user_pref("media.memory_cache_max_size", 1048576); // alt=512000; overrides Securefox (for now) +user_pref("media.memory_caches_combined_limit_kb", 3145728); // alt=2560000 + //user_pref("media.memory_caches_combined_limit_pc_sysmem", 40); // default=5 +user_pref("media.hardware-video-decoding.force-enabled", true); + //user_pref("media.ffmpeg.vaapi.enabled", true); // [LINUX] + +// PREF: decrease video buffering [not be needed with the above] +//user_pref("media.cache_size", 2048000); // default=512000 +//user_pref("media.cache_readahead_limit", 99999); // default=60; stop reading ahead when our buffered data is this many seconds ahead of the current playback +//user_pref("media.cache_resume_threshold", 99999); // default=30; when a network connection is suspended, don't resume it until the amount of buffered data falls below this threshold (in seconds). + +/**************************************************************************** + * SECTION: BROWSER CACHE * +****************************************************************************/ + +// [EXTENSION] https://addons.mozilla.org/en-US/firefox/addon/cache-longer/ + +// PREF: re-enable disk cache (optional) +//user_pref("browser.cache.disk.enable", true); // SecureFox override +//user_pref("browser.cache.disk.smart_size.enabled", false); // disable adaptive cache size on disk +//user_pref("browser.cache.disk.capacity", 8192000); // 8 GB cache on disk +//user_pref("browser.cache.max_shutdown_io_lag", 16); // number of seconds the cache spends writing pending data and closing files after shutdown has been signalled +//user_pref("browser.cache.frecency_half_life_hours", 128); // lower cache sweep intervals, the half life used to re-compute cache entries frecency (in hours) +// disable clearing cache on shutdown: +//user_pref("privacy.clearOnShutdown.cache", false); + +// PREF: increase memory cache size (recommended) +//user_pref("browser.cache.memory.capacity", 5242880); // default=-1; 256000=256MB, 512000=512MB, 1024000=1GB, 2097152=2GB, 5242880=5GB, 8388608=8GB +user_pref("browser.cache.memory.max_entry_size", 51200); // preferred=327680 or -1; entries bigger than than 90% of the mem-cache are never cached + +/**************************************************************************** + * SECTION: SPECULATIVE CONNECTIONS (OPTIONAL) * +****************************************************************************/ + +// [NOTE] FF85+ partitions (isolates) pooled connections, prefetch connections, +// pre-connect connections, speculative connections, TLS session identifiers, +// and other connections. We can take advantage of the speed of pre-connections +// while preserving privacy. Users may relax hardening to maximize their preference. +// For more information, see SecureFox: "PREF: State Paritioning" and "PREF: Network Partitioning" [1] +// Individual pref descriptions = [2] +// [1] https://github.com/yokoffing/Betterfox/blob/e9621b0062914da5fdb5f83b8da64041965b7a50/Securefox.js#L74-L108 +// [2] https://github.com/yokoffing/Betterfox/blob/e9621b0062914da5fdb5f83b8da64041965b7a50/Securefox.js#L436-L542 + +// [NOTE] In uBlock Origin, go to settings and make sure the following are OFF: +// - "Disable pre-fetching (to prevent any connection for blocked network requests)" +// - "Disable hyperlink auditing" + +// PREF: increase network predictions +user_pref("network.http.speculative-parallel-limit", 6); // DEFAULT; overrides SecureFox +user_pref("network.dns.disablePrefetch", false); // overrides SecureFox +user_pref("network.dns.disablePrefetchFromHTTPS", false); + user_pref("network.dnsCacheEntries", 20000); + user_pref("network.dnsCacheExpiration", 3600); + user_pref("network.dnsCacheExpirationGracePeriod", 240); +user_pref("browser.urlbar.speculativeConnect.enabled", true); // overrides SecureFox +user_pref("browser.places.speculativeConnect.enabled", true); // overrides SecureFox +user_pref("network.prefetch-next", true); // overrides SecureFox +user_pref("network.predictor.enabled", true); // overrides SecureFox +user_pref("network.predictor.enable-prefetch", true); // overrides SecureFox +user_pref("network.predictor.enable-hover-on-ssl", true); + user_pref("network.predictor.preresolve-min-confidence", 10); // default=60; alt=20 + user_pref("network.predictor.preconnect-min-confidence", 20); // default=90; alt=40 + user_pref("network.predictor.prefetch-min-confidence", 20); // default 100; alt=60 + user_pref("network.predictor.prefetch-force-valid-for", 3600); // default=10 + user_pref("network.predictor.prefetch-rolling-load-count", 120); // default=10 + + // PREF: faster SSL +user_pref("network.ssl_tokens_cache_capacity", 32768); // more TLS token caching (fast reconnects)