Accessory, not necessity
The background should be an accessory, not a necessity. If the background weren't there, it shouldn't negatively affect usability. An example of a poorly designed website that uses the background as a necessity is Project Swole. Before the background is loaded, there is not enough contrast to read the text. When I access this site on a slow mobile network, I have to wait ages to even begin scanning the text. On the other hand, a website like Legendary Aircraft is still very usable before the background has loaded.
Bad
Good
Non-blocking
The background should be set with CSS like this background: url(whatever.jpg)
. It should not be an <img src="whatever.jpg">
tag. The former does not block the window onload event. The latter will block it. Some Javascript might be listening for the window onload event. If you were to use a large background in an <img>
tag, this would delay the said Javascript from executing and prevent the user from interacting with the page.
Fast loading
I haven't used large backgrounds in ages, but the last time I checked, progressive JPEGs do not progressively load as CSS backgrounds. Rather, they tear in slowly. This presents a disconcerting effect to the user. It beckons at the 56K modem days, which we all don't want to go back to. It would be better if you lower the file size of the image to mitigate this tearing effect. Many designs with large backgrounds wouldn't suffer from more compression, because backgrounds shouldn't need much detail. If they needed detail, it would mean the background distracts from the main content.
Optimize the image
Many images saved are not saved in optimal compressed form. They contain metadata, which is usefull in many cases, but not for use in browsers. Also the used compression may be less than optimal. Run your image through a image optimizer before publishing it on the web. There are many out there, but one of the easiest thing to do is run it through this webservice: kraken.io
Don't use on mobile devices
On the mobile version of your website, you should not use large background images. Many mobile users are still using Internet connections 10 times slower than broadband, such as 3G. Since mobile users are in much more of a hurry than desktop users, they won't stick around to view the fancy background. Large backgrounds also eat away at mobile user's data plans, which is sometimes not unlimited like many broadband services. Lastly, network operations are one of the leading tasks that drain the battery on mobile devices. This I learned while watching Apple's introductory tutorials on iOS development.
You can override your desktop's background style with CSS media queries.
body {
background: #ABCDEF url(largeBackground.jpg);
}
@media screen and (max-width: 640px){
body {
/* option 1: remove background altogether */
background: #fff;
/* option 2: serve a much smaller background */
background: #ABCDEF url(muchSmallerBackground.jpg);
}
}