# 2010-11-05 // Keep your Firefox fast and slim: use different profiles for different tasks

You know the problem: tons of add-ons are bloating your Firefox. Including slower rendering speed and start-up. This is especially true if you are a web developer because there are many useful but heavy extensions you never need if you are not working on a project. Different profiles and starters/shortcuts may help you out. It works for me1) and I'm sharing my approach here (maybe it is useful for someone else).

I grouped all my add-ons into different categories:

1. Privacy
Things like RefControl, Ghostery and BetterPrivacy.
2. Web Development
Things like FireBug, HttpFox, Html validator and MeasureIt.
3. Basic Security Testing
Things like HackBar, SQL Inject Me, XSS Me and Access Me.

## 2nd: create different profiles

I created different profiles fitting my different tasks. Based on their usage, the add-ons and settings were allocated. I started with three profiles (“daily usage”, “web development”, “security testing”) but ended up with the following two:

1. Daily usage/surfing:
slim look (I want to see content, not bars), fast browsing, shortcuts for important tasks.
• Installed all add-ons out of the “Comfort and GUI” group.
• Installed all add-ons out of the “Privacy” group.
• Created Shortcuts for my search engines (you can set them via searchbox→“Manage search engines…”). I deleted all default ones and ended up with:
• I allowed more connections and activated HTTP pipelining by adding the following to the user.js:
user.js
//HTTP pipelining, network
//- http://en.wikipedia.org/wiki/HTTP_pipelining
//- http://kb.mozillazine.org/Network.http.pipelining
//- http://kb.mozillazine.org/Network.http.proxy.pipelining
//- http://kb.mozillazine.org/Network.http.pipelining.maxrequests
//- http://kb.mozillazine.org/Network.http.max-connections
//- http://kb.mozillazine.org/Network.http.max-connections-per-server
//- http://kb.mozillazine.org/Network.http.max-persistent-connections-per-proxy
//- http://kb.mozillazine.org/Network.http.max-persistent-connections-per-server
user_pref("network.http.pipelining", true);
user_pref("network.http.proxy.pipelining", true);
user_pref("network.http.pipelining.maxrequests", 8);
user_pref("network.http.max-connections", 48);
//user_pref("network.http.max-connections-per-server", 16); default is 15 since FF3, no more tuning needed
user_pref("network.http.max-persistent-connections-per-proxy", 10);
user_pref("network.http.max-persistent-connections-per-server", 8); //default is 6 since FF3

This should boost the rendering speed far enough.

2. Web Development
“vanilla” look & feel to see websites as most users see them. Rendering performance does not matter, I just need access to important tools. Cookies and history will be deleted when the browser gets closed.
• Installed all add-ons out of the “Web Development” group.
• Installed all add-ons out of the “Basic Security Testing” group.

Your groups and profiles may differ from mine, but keep in mind that most developer extensions2) and validators3) are really heavy in terms of performance impact, leading to a slower Firefox.

You can use the Profile Manager to create new profiles (its usage should be self-explanatory):

1. Close all open Firefox windows and processes.
2. Start the Profile Manager:
• Unix-like systems: (the parameters are case sensitive!): Open a terminal:
firefox -ProfileManager

If this does not work, try

firefox -P
• MS Windows: Open a command line or use “Start\Run…” to execute:
firefox.exe -P

If this does not work, try

x:\complete\path\to\firefox.exe -P

## 3rd: create starters/shortcuts, fine-tuning

To get quick access to your different profiles and use them in parallel, create additional starters/shortcuts on your desktop. All you need are the following Firefox parameters (parameters and values are case sensitive):

• -no-remote: Enables running multiple Firefox instances with different profiles
• -P "Profile name as shown in the ProfileManager": The profile to use.

A complete command should look like one of the following:

• Unix-like:
firefox -no-remote -P "webdevelopment"
• MS Windows:
firefox.exe -no-remote -P "webdevelopment"
Never use -no-remote to start the “default” profile (the one that is set to open without asking when you launch Firefox). That's because when you launch Firefox, for example, by clicking a link in your mail program, you will get a Firefox is already running but is not responding message if the default profile is already in use. The solution is to always start the default profile normally and launch all others with -no-remote. Then it will work.

If you need more help, have a look at “Opening a new instance of your Mozilla application with another profile”. The Profile Switcher add-on may fit your needs if shortcuts/starters are not handy enough for you. And you may add different themes/personas to make the profiles more distinguishable from each other.

1)
I really love my Firefox again. You don't need to switch to Chrome/Opera to get a fast browser.
2)
like FireBug, HackBar
3)
like Html validator

seb
No. 1 @ 2010/11/05 19:33

Thanks for sharing. I knew and used the 'no-remote' option but did not know about the default starting profile. Cheers

[…] 2010:11:05:keep-firefox-fast-slim-use-different-profiles-for-different-tasks-prevent-slowdown - blog.andreas-haerter.com - IT, web and nerdy stuff […]

No. 3 @ 2010/11/07 12:04

user_pref(“network.http.max-connections-per-server”, 16);

Don't do that. It violates the HTTP specification and might get you blocked on some hosts (like dokuwiki.org).

No. 4 @ 2010/11/07 15:12

@Andreas Gohr: IMHO, Firefox 3 got a default value of 15 (Firefox 2 got a default value of 8). Therefore 16 shouldn't be a problem?! Mhh… I have to investigate that.

BTW: Thank god, I never got blocked on Dokuwiki.org.

No. 5 @ 2010/11/07 15:31

@Andreas Gohr: Yes, 15 is the default in FF3 for “network.http.max-connections-per-server”. You can check if for yourself by looking at “about:config” if you don't believe me. However, I edited my blog posting.

No. 6 @ 2010/11/07 16:51

@Andreas Haerter: Hmm. The RFC says:

A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy.

15 being default for FF3 seems like a really bad idea if the Browser really uses that much simultaneous connections as it could increase the load on the server significantly…

I'm using mod_evasive at dokuwiki.org which will block clients that have more than 8 connections simultaneously open. But I hadn't complaints by FF3 users, yet…

No. 7 @ 2010/11/07 21:08

@Andreas Gohr: Hmm. Maybe your mod_evasive is not as strict as you think: AFAIK it is possible to configure it per child process and/or threads, data not shared between them. If the children are shutting down, the IP log should die with them. I'm not even sure if it shares across threads in the same child when done wrong. But maybe my information is outdated (I'm using Apache only in smaller, personal and non-public projects). Have you ever tested if this “8 cons per second limit” on your server is really enforced? Maybe common default configurations are more tolerant because of FOO/BAR/side-effect described on Page X in doc Y.

I mean: a hard limit of 8 would affect every FF3 user with enough CPU and a speedy connection. And larger Proxies (→ e.g. 16 connections, when two user are creating 8 connections and using the same proxy simultaneous). Even Opera got a default value of 8 connections (→ 4 times more than recommended by RFC… maybe this 11(!) years old recommendation is out of date? Don't know…).

BTW: Thanks for the new DokuWiki stable release. I'm currently updating all of my installations. DokuWiki rocks. Kudos to you!

S G C᠎ X G
• E-Mail address will not be published.
• Formatting:
//italic//  __underlined__
**bold**  ''preformatted''
[[http://example.com]]
• Quotation:
> This is a quote. Don't forget the space in front of the text: "> "
• Code:
<code>This is unspecific source code</code>
<code [lang]>This is specifc [lang] code</code>
<code php><?php echo 'example'; ?></code>
Available: html, css, javascript, bash, cpp, …
• Lists:
Indent your text by two spaces and use a * for
each unordered list item or a - for ordered ones.