The Secrets Of about:config – Part2

Some of the more recent Firefox customizations I’ve examined are ways to speed up the rendering of Web pages. The settings to do this are a little arcane and not terribly self-explanatory, but with a little tinkering, you can often get pages to pop up faster and waste less time redrawing themselves.

Start rendering pages faster
Creating an nglayout.initialpaint.delay integer preference lets you control how long Firefox waits before starting to render a page. If this value isn’t set, Firefox defaults to 250 milliseconds, or 0.25 of a second. Some people report that setting it to 0 i.e., forcing Firefox to begin rendering immediately causes almost all pages to show up faster. Values as high as 50 are also pretty snappy.

Reduce the number of reflows
When Firefox is actively loading a page, it periodically reformats or “reflows” the page as it loads, based on what data has been received. Create a content.notify.interval integer preference to control the minimum number of microseconds (millionths of a second) that elapse between reflows. If it’s not explicitly set, it defaults to 120000 (0.12 of a second).

Too many reflows may make the browser feel sluggish, so you can increase the interval between reflows by raising this to 500000 (500,000, or 1/2 second) or even to 1000000 (1 million, or 1 second). If you set this value, be sure to also create a Boolean value called content.notify.ontimer and set it to true.

Control Firefox’s ‘unresponsive’ time
When rendering a page, Firefox periodically runs a little faster internally to speed up the rendering process (a method Mozilla calls “tokenizing”), but at the expense of being unresponsive to user input for that length of time. If you want to set the maximum length of time any one of these unresponsive periods can be, create an integer preference called content.max.tokenizing.time.

Set this to a multiple of content.notify.interval‘s value, or even the same value (but higher is probably better). If you set this to something lower than content.notify.interval, the browser may respond more often to user input while pages are being rendered, but the page itself will render that much more slowly.

If you set a value for content.max.tokenizing.time, you also need to create two more Boolean values content.notify.ontimer and content.interrupt.parsing and set them both to true.

Control Firefox’s ‘highly responsive’ time
If Firefox is rendering a page and the user performs some kind of command, like scrolling through a still-loading page, Firefox will remain more responsive to user input for a period of time. To control how long this interval is, create an integer preference called content.switch.threshold.

This is normally triple the value of content.notify.interval, but I typically set it to be the same as that value. Set it to something very low say, 10000 (10,000 microseconds) and the browser may not respond as snappily, but it may cause the rendering to complete more quickly.

If you haven’t already created the Boolean values content.notify.ontimer and content.interrupt.parsing and set them both to true in conjunction with content.max.tokenizing.time, you’ll need to do so to make content.switch.threshold work properly.

If you are more inclined to wait for a page to finish loading before attempting to do anything with it (like scroll through it), you can set content.max.tokenizing.time to a higher value and content.switch.threshold to a lower value to allow Firefox to finish rendering a page faster at the expense of processing user commands. On the other hand, if you’re the kind of person who likes to scroll through a page and start reading it before it’s done loading, you can set content.max.tokenizing.time to a lower value and content.switch.threshold to a higher one, to give you back that much more responsiveness at the cost of page-rendering speed. Continued…

The secrets of about:config – part1

Previous The Secrets Of about:config – Part1
Next Fastest Way to Refresh a Page in Firefox

No Comment

Leave a reply

Your email address will not be published. Required fields are marked *