Using a far future
header on images is fairly common, but this best practice should not be
limited to images. A far future
Expires header should be included on any
component that changes infrequently, including scripts, stylesheets, and
Flash components. Typically, an HTML document won't have a future
Expires header because it contains
dynamic content that is updated on each user request.
In the ideal situation, all the components in a page would have a
Expires header, and
subsequent page views would make just a single HTTP request for the HTML
document. When all of the document's components are read from the
browser's cache, the response time is cut by 50% or more.
I surveyed 10 top Internet sites in the U.S and recorded how many
of the images, scripts, and stylesheets had an
Expires or a
Cache-Control max-age header set at least 30
days in the future. As shown in Table 5-2, the news isn't good.
Three types of components are tallied: images, stylesheets, and scripts.
Table 5-2 shows the number of
components that are cacheable for at least 30 days out of the total
number of components of each type. Let's see to what extent these sites
employ the practice of making their components cacheable:
Five sites make a majority of their images cacheable for 30 days or more.
Four sites make a majority of their stylesheets cacheable for 30 days or more.
Two sites make a majority of their scripts cacheable for 30 days or more.
Table 5-2. Components with an ...