Put Stylesheets at the Top
How putting Stylesheets at the Top improves Web site download performance
While researching performance at Yahoo!, we discovered that moving stylesheets to the document HEAD
makes pages appear to be loading faster. This is because putting stylesheets in the HEAD allows the
page to render progressively.
Front-end engineers that care about performance want a page to load progressively; that is, we want the
browser to display whatever content it has as soon as possible. This is especially important for pages
with a lot of content and for users on slower Internet connections. The importance of giving users visual
feedback, such as progress indicators, has been well researched and documented. In our case the HTML
page is the progress indicator! When the browser loads the page progressively the header, the navigation
bar, the logo at the top, etc. all serve as visual feedback for the user who is waiting for the page. This
improves the overall user experience.
The problem with putting stylesheets near the bottom of the document is that it prohibits progressive
rendering in many browsers, including Internet Explorer. These browsers block rendering to avoid having
to redraw elements of the page if their styles change. The user is stuck viewing a blank white page.
The HTML specification clearly states that stylesheets are to be included in the HEAD of the page:
"Unlike A, [LINK] may only appear in the HEAD section of a document, although it may appear any
number of times." Neither of the alternatives, the blank white screen or flash of unstyled content, are
worth the risk. The optimal solution is to follow the HTML specification and load your stylesheets in the
document HEAD.
Other Topics
Overview Web Site performance Improvement
Minimize HTTP Requests
Use a Content Delivery Network
Add an Expires or a Cache-Control Header
Gzip Components
Put Stylesheets at the Top
Put Scripts at the Bottom
Avoid CSS Expressions
Make JavaScript and CSS External
Reduce DNS Lookups
Minify JavaScript and CSS
Avoid Redirects.
Remove Duplicate Scripts
Configure ETags
Make Ajax Cacheable
Flush the Buffer Early
Use GET for AJAX Requests
Post-load Components
Preload Components
Reduce DOM Elements
Split Components Across Domains
Minimize the Number of iframes
No 404s
Reduce Cookie Size
Use Cookie-free Domains for Components
Minimize DOM Access
Develop Smart Event Handlers
Choose over @import
Avoid Filters
Optimize Images
Optimize CSS Sprites
Don't Scale Images in HTML
Make favicon.ico Small and Cacheable
Keep Components under 25K
Pack Components into a Multipart Document
Avoid Empty Image src