I’ve read in many places that the number important thing for improving page load time is to reduce HTTP requests on a page. However, sometimes people say if you set an Expires header far in the future it doesn’t matter because it will be in the browser cache.
I wanted to be sure I understood how the Expires header in the future worked because at CheezHQ we’ve been discussing how aggressive we should be with images sprites. As part of my research, I found this performance research from Yahoo:
40-60% of Yahoo!’s users have an empty cache experience and ~20% of all page views are done with an empty cache. To my knowledge, there’s no other research that shows this kind of information. And I don’t know about you, but these results came to us as a big surprise. It says that even if your assets are optimized for maximum caching, there are a significant number of users that will always have an empty cache. This goes back to the earlier point that reducing the number of HTTP requests has the biggest impact on reducing response time. The percentage of users with an empty cache for different web pages may vary, especially for pages with a high number of active (daily) users. However, we found in our study that regardless of usage patterns, the percentage of page views with an empty cache is always ~20%.
Like the researchers, that surprised me too.
Now, they made the caveat for “pages with a high number of active (daily) users”. I wondered if that was us because we have a high percentage of users who visit the site every day.
After digging in some analytics data, I determined that unless you’re a very frequent visitor to one of our sites, you’re visiting us with a cache that is effectively empty—downloading many or all of the objects on our homepage. Why? Because we update our pages multiple times per day.
Even sites like ours with a very high segment of users who visit daily (or more than once per day!), still have a high number of visits with an empty cache. The reason being that even if you were on the site just a few hours ago, the all the content on the pages is new and therefore needs to be downloaded.
In other words, the frequency of visits as a factor in reducing empty cache visits is counteracted by the frequency that a site’s content is updated. Of course, this makes sense because unless a site updates it’s content frequently users don’t have a reason to return frequently.
The bottom line: reducing HTTP requests continues to be most important for improving site performance.
Just how important? Great question! Stay tuned: I have some data that I can share with you that illustrates just how valuable improvements in page load times can be…I’ll post it soon.