UPDATE: See at the end of the article !

I’ve been a Firefox user since its first versions, way back, when the norm for a pretty good computer was a CPU at around 900 mhz and a 20GB HDD was considered huge (around here, in Eastern Europe, most technologies get adopted a bit later 🙂 ).

In the beginning, it was a fast, responsive, snappy browser, that made me and my customers some of its happiest users. I used to recommend it to anyone with an internet connection, and I used to replace all browsers – except opera – with FF, that is, until this stupid mentality of constant updates, ever decreasing performance, and less and less usability was adopted by its developers.

Searching for values in firefox's about:config list
Searching for values in firefox’s about:config list

Those of us who still use the firefox webbrowser – or any offshoot of it – know, that the branded Firefox has just gotten worse and worse since version 4.0, when features we all loved have started disappearing and stuff that nobody needed (well, users didn’t need, anyway) have started being implemented more and more.

Today, if you install a firefox version from the official repositories – on any OS – you get a sloppy, slow, stupid, dumbed-down version of what a good browser used to be. In order to make the browser use less memory, be less CPU hungry, one has to either install difficult-to-find extensions, make not very clearly understandable manual tweaks here and there in the config files, or in most cases, both of the above.

Over the years, I’ve gotten more and more bothered that the computer I’m using for simple browsing online had to become more and more powerful and loaded with more and more memory just to be able to open a few simple webpages in a few tabs, and do ordinary stuff like reading e-mails or collaborating with others on forums online. So I’ve continuously searched for and implemented simple changes in the configuration of Firefox, that would allow me to use the browser as it used to be, before the “newer, better, and improved” crap was implemented into it. Usually, every new version that comes out, forces the user to implement some changes, or the browser will become unrecognisable compared to what it used to look and feel like.

So, here’s my list of configuration changes that allow me to use FF20 on linux (and with one single configuration directive’s exception, on Windows XP, too), as version 3.6 used to work and feel like, with very little memory consumption, little cpu overweight, and snappy, responsive operation, on a single-core, Celeron machine with only 1 GB of RAM.

The configuration changes from the list below can be made by typing about:config in the address bar, and accesing the settings despite of the warning message, if there is one.

The list contains setting / values pairs, separated by a semicolon character (” ; ” ), meaning that the setting/configuration directive’s name has to be as it appears on the left side of the semicolon, and the value, has to be the one on the right side of the semicolon.

For those less familiar with the settings, settings with “true” or “false” values indicate a “boolean” configuration directive type. Settings with numbers in the values, indicate an “integer” config directive type. And settings with neither numbers nor true/false values, are “string” type config directives.

To search for a config directive, type a few letters from its name in the search box as seen in the image in this post, and make sure you locate the one matching exactly the name from the list.

To modify the value of a directive, double-click on it, and enter the necessary value in the dialog box that appears, if the directive is of a string or numeric type, or select one from the two possible choices if the directive is of boolean type, and either press enter or click on OK.

If you can’t find the name of the configuration directive you’re looking for, in your about:config list, it means that it has been considered deprecated (here’s one of the dumbest words in existence today , “deprecated”), and it has been removed from the configuration , but if you create that directive, the browser will “know” what to do with it, and at least up to version 20., it’s obvious, that the directives still have the desired effect on the browser. To create a new configuration directive, right-click in your about:config list, and select “New->” and then integer, string, or boolean, in accordance to what type of directive you see from my list as missing in your about:config list, then press enter, and select or enter the necessary value for the newly created directive.

Needless to say, it’s neither the purpose, of this blogpost, nor the place, to explain each directive separately, if you’re curious or want to know exactly what each of the directives do, go ahead and look them up in mozilla’s knowledgebase.

The settings and tweaks presented in the list below are provided on an “AS IS” basis, I don’t accept any responsability with regard to their effect on your browser ! I provide the list in good faith, it’s up to you whether you will implement them or not.

PLEASE READ THE BLOGPOST COMPLETELY, DON’T JUST START IMPLEMENTING THE LIST !!!

accessibility.typeaheadfind.enabletimeout;false
browser.cache.compression_level;5
browser.cache.disk.capacity;65535
browser.cache.disk.smart_size.use_old_max;false
browser.cache.memory.capacity;8192

browser.cache.disk.parent_directory;/dev/shm

browser.chrome.image_icons.max_size;0
browser.chrome.toolbar_tips;false
browser.display.show_image_placeholders;false
browser.dom.global_scope_pollution;disabled
browser.download.manager.scanWhenDone;false
browser.download.useDownloadDir;false
browser.download.useToolkitUI;true
browser.fixup.alternate.enabled;false
browser.fullscreen.animateUp;0
browser.fullscreen.autohide;false
browser.history_expire_sites;100
browser.microsummary.enabled;false
browser.newtab.url;about:blank
browser.newtabpage.columns;0
browser.newtabpage.enabled;false
browser.newtabpage.rows;0
browser.preferences.instantApply;false
browser.related.enabled;false
browser.search.update;false
browser.sessionstore.restore_on_demand;false
browser.sessionhistory.max_total_viewers;10
browser.startup.homepage;about:blank
browser.tabs.closeWindowWithLastTab;false
browser.tabs.onTop;false
browser.tabs.showSingleWindowModePrefs;true
content.max.tokenizing.time;360000
content.interrupt.parsing;false
content.notify.backoffcount;1
content.notify.interval;50000
content.switch.threshold;50000
dom.ipc.plugins.flash.subprocess.crashreporter.enabled;false
image.cache.size;132768
image.http.accept;image/png,image/*;q=0.1,*/*;q=0.1
image.cache.timeweight;4000
image.mem.max_decoded_image_kb;132768
image.mem.max_ms_before_yield;500
network.buffer.cache.count;32
network.buffer.cache.size;16384
network.dnsCacheEntries;200
network.dnsCacheExpiration;14400
network.ftp.idleConnectionTime;90
network.http.accept-encoding;gzip, deflate,vary
network.http.accept.default;text/html,application/xhtml+xml,application/xml;q=0.1,*/*;q=0.1
network.http.keep-alive.timeout;90
network.http.max-connections-per-server;16
network.http.pipelining.firstrequest;false
network.http.spdy.send-buffer-size;32768
network.websocket.extensions.stream-deflate;true
nglayout.initialpaint.delay;false
nglayout.enable_drag_images;false
services.sync.prefs.sync.pref.advanced.images.disable_button.view_image;false
services.sync.prefs.sync.permissions.default.image;false
toolkit.autocomplete.richBoundaryCutoff;100
toolkit.scrollbox.smoothScroll;false
toolkit.storage.synchronous;0
viewmanager.do_doublebuffering;false
webgl.msaa-level;0

PLEASE READ THE BLOGPOST COMPLETELY, DON’T JUST START IMPLEMENTING THE LIST !!!

I’d recommend you close your browser window after changing / setting these directives, and waiting for a few seconds before restarting it, to allow the hard-drive in your computer to fully flush its cache and release all remaining firefox processes from memory.

After restarting the browser with the above settings implemented, your firefox should behave a lot better, it should be faster, snappier, much more user-friendly.

Now, as I’ve mentioned earlier, there is one exception to the settings list, I’ve intentionally left the setting in the list above, in a separate paragraph, because there are two things you need to know about this directive: first of all, if you’re on any windows-based computer, there is no /dev/shm in windows, so in that case, you would simply indicate the location of your desired temporary folder to your FF.

On windows-based computers, it makes a world of difference, with regard to performance, whether you set this folder to be in a separate, first-level folder, and NOT mingled, NOT in a subfolder on your harddrive. So, to be clear, there is a huge performance increase in the browser’s speed, on windows-based computers, if you set this temporary folder to be, for instance, “C:\fftemp”, and not “C:\Documents and Settings\Application Data\……sometempfolder\”. Go ahead, create a separate temp folder directly in the root of your drive, and allocate that folder exclusively to this configuration directive in your about:config list, you’ll be surprised how snappier your browser can become from just this one single setting alone.

If you’re on linux, however, setting this directive only works if you actually have a /dev/shm mount for temporary operations in place, so you need to check for it either by typing “mount” in the terminal, or by other means, if you know your linux box.

If there’s no /dev/shm mount in your linux’s configuration, you can set /tmp for this directive.

Also, it would be a good idea to set your harddrive to be as fast as possible, (hdparm) and tell your system via sysctl (/etc/sysctl.conf) to use less swapping if possible and be more relaxed with regard to read/write operations. (If you don’t know how to do that, leave a comment).

Finally, if you’ve implemented the settings from my list and that has helped you, it has made your browser faster, please share this article with your friends, maybe they could use a faster firefox, too.

If you’d like to comment, have any questions or comments related to this article or to any other windows/linux related topic, please use the disqus or facebook commentbox below the post to ask your questions or leave your comment

I’m open to discussing the list or -almost – any other IT related topic.

Thanks for reading !

 

Update: I’ve just found 2 more tweaks, that made firefox twice as fast, in the mozilla support forums, so here they are: (1GB ram, Celeron machine @3GHz, feel free to tweak it to your machine’s specs)

javascript.options.mem.max;65535

javascript.options.mem.gc_frequency;10

Let me know in the comments how it works out for you !