By Thomas McGuire
Editor: Julio Franco

Read user comments

Advanced: Rendering

nglayout.initialpaint.delay (Integer). This value specifies the amount of time, in milliseconds, before Firefox should attempt rendering a page (Default of 250). This is perhaps the most misunderstood setting in Firefox, with numerous websites recommending you set this to 0 for fastest browsing. Somewhat ironically this actually increases the total time rendering a webpage, as explained by Asa Dotzler:

Setting the initial paint delay at 0, may get you some content on the screen faster, but it's worth noting that it will dramatically slow down the time it takes the entire page to display. Here's what's going on. Gecko, Firefox's rendering engine, is trying to optimize between the cost of waiting for a bit more data versus doing more painting and reflows as new data comes in. Waiting a bit longer before it starts painting the page gives Gecko a chance to receive more content before chewing up CPU cycles to render and reflow the document. If you drop this value down to 0 or near 0, that means you'll see the page start displaying a bit earlier, but not having received much data in that short interval, you'll have a lot more paint and reflow cycles to complete rendering of the page.

So if you don’t care about overall rendering time then yes, setting this to 0 can result in some content being displayed immediately (Giving the perception of improved speed). If however, you’d prefer improved overall page rendering time then you’ll want to adjust this value based on bandwidth available. Low bandwidth (dial-up) connections can benefit noticeably by increasing this value, with 750/1000 (The former being what I use currently) proving good. High bandwidth connections should be just fine at the default (250) – besides, is ¼ second really “that” noticeable a delay anyway?

content.notify.interval (Integer). This option specifies the amount of time, in microseconds (1/1000 millisecond), between reflows (Default of 120000). If you intend to adjust this value then bandwidth should play some role – low bandwidth connections are unlikely to receive much data over 0.12 seconds so you might see some performance benefit to giving it increased time to receive data before attempting a reflow. With high bandwidth connections the opposite may likely prove to be true, although reducing the time between reflows further can raise CPU use, so there’s no need to reduce this excessively, if at all, in such cases. If you do wish to use a lower value then 100000 (0.1 seconds) should be the lowest you consider going.

content.max.tokenizing.time (Integer). The value entered here determines the amount of time, in microseconds, after which parsing is interrupted to return to the application’s event loop. It’s recommended to set this to 3 x content.notify.interval, e.g. with a content.notify.interval of 150000, set content.max.tokenizing.time or 450000.

browser.display.show_image_placeholders (Boolean). Setting this to true enables the display of an image placeholder while loading images on a webpage (Getting replaced by the images as they download). Setting this to false disables such placeholders, which is recommended if you’ve a fast internet connection (As more than likely the placeholder will be replaced with the image almost immediately). On the downside however, the placeholder for broken images also no longer displays (Though personally it’s not something I need).

browser.enable_automatic_image_resizing (Boolean). Setting this to true enables Firefox to scale images that don’t fit in the current window/tab. A magnify glass, , will appear over images can be scaled/restored. The level of distortion this can introduce to the image will of course vary depending on the resizing necessary to fit into the window. Set this option to false to disable automatic resizing of images.

image.animation_mode (String). This setting controls rendering of animated images. normal specifies that the image is animated as many times as the file specifies (Infinitely probably). once, (amazingly enough) sets that an image is animated only once, i.e. not looped (The final frame of the image is left displayed when the animation has finished, while none sets that the image is not animated (Displaying only the first frame of the image instead).

images.dither (String). Dithering can be used to create the illusion of enhanced colour depth in images with a limited colour palette, e.g. gifs. That said, dithering can also make images appear grainier. As such it’s mainly a matter of preference whether you prefer the appearance of dithered images or not. Firefox provides 3 options to control image dithering.

auto. This option allows Firefox to determine whether an image should be dithered.

true. This option enables image dithering in Firefox.

false. This option disables image dithering in Firefox.