The idea is to avoid unnecessary HTTP requests. This is especially true if you have many small icons (for example, for a WYSIWYG editor such as the one used on this site). If you have twenty 16x16 pixel icons, this will not mean more bandwidth, but when you load the page it will still mean twenty additional requests.
Other sprite candidates are button states and all that is purely decorative, but part of the layout.
If you use flipping through background images, you will also find that you need to preload the flipping state image (either using JS or silly hard coding), or you will encounter some delay because the browser requests a previously unused image. Sprites can make this easier.
Things you probably shouldn't do sprites are images that aren't just graphic elements (like graphics, illustrations, avatars, announcements) or that will change a lot (like avatars or announcements).
It is not possible to change sprites, but depending on how much you put on the location of the sprite sheet, it can be very difficult to do. Nothing made you make the sprite sheet ultra-condensed, but it’s obviously better for the file size if there are no extra spaces in it (see Google).
Please note that additional requests may not be a problem for you if you have a relatively low traffic site (which almost everyone has, unless you are Google or Amazon). However, Sprites can improve the performance of mobile devices, as this means less chance of errors and therefore lower latency.
Alan plum
source share