Delivery is far too often a second thought, that is of course until the site is swamped or crashes. Once organizations are caught in a fire they look for firemen – that’s where I come in. A few talks, articles, and promoting good delivery practices in the community puts me in the fun position of getting the frantic call and being asked to step into the flames and see what I can do to help a sinking site and nearly always one I likely haven’t seen until that moment. I share here a few things I have seen this year and some ideas on how you might combat them before making a call to your particular network fireman.
Issue 1 – Watch for Static Dynamics I’ve posted on this before but if you generate every page out of a database every view but the content doesn’t change you are burning CPU and disk access for no good reason. If content is pretty much static but stored in a back end or CMS system build it when you need it and no more. A simple reverse proxy cache can be brought in quickly, but a publishing mechanism is a better way to go.
Issue 3 – Utilize Caching You want to cache. You need to cache. Unfortunately you likely aren’t caching. Few sites cache properly and when they know about caching they tend to expire content immediately or even worse cache the HTML which is the one thing you don’t want to cache. Put cache control information on your dependent objects far into the future and rename the file if you change it. Consider that once users have a resource you really don’t ever deliver it again if you can avoid it.
Issue 4 – Watch your downloads Big files will take a while and they will bog your server down quickly. Understand that the network connections can be closed and reused until the last packet is ACKed by your end-user. Because of this you can have tons of bandwidth and still be saturated unable to take connections. The speed to which you serve is a function of the total link to the end-points not your link. Off load long downloads to special devices or better yet a Content Distribution Network. There is a reason that most installers, videos, and other heavy objects are delivered this way.
Issue 5 – Know Your Limits Infinite hosting doesn’t exist, well at least not until Google gets into it. Kidding aside all systems will eventually break. If you push too many users to even the best designed site there eventually will be a problem. The big question begs, do you know how many users that is? The next restaurant you visit knows how many people can be served but do you know that for your Web site? Don’t let your next big good (or bad) event be the time you find out what that limit is – stress test today!
Issue 6 – Avoid Single Solutions Delivery like most things Web related is composed of many moving parts, while some areas will effect delivery more than others it is generally the aggregate effect you are worried about. Avoid looking for the one tool, piece of hardware, hosting vendor or other piece that will make it your site go fast there typically isn’t one.
There is much more to say on the subject but blog posts should be brief to actually be read. For some more details you can see what things I recommended 4 years (http://www.sitepoint.com/article/effective-website-acceleration) it’s pretty much the same today. We can go back 7 years to some Network World articles if you want the same content more vintage. Not that I want to repeat the same content again and again, but given the number of times I see the same issue it seems many folks rated such ideas unimportant – broadband would solve all – which it didn’t. Today the situation is much different and now that Yahoo endorses (http://developer.yahoo.com/performance/rules.html) such ideas I am happy to say that ears are more open and adding bandwidth and buying more servers isn’t the first solution mentioned. It really isn’t that debatable what to do, a simple stop watch will show the winner or loser when it comes to any delivery ideas.
So make 2008 the year you put some good thinking into delivery. It will make your next delivery drama a little less dramatic and your customers a whole lot happier.
Accessibility on the Modern Web
There’s been a lot of buzz in the news lately about accessibility, specifically in reference to the dozens of ADA lawsuits that seem to be more and more...
Automated Visual Regression Testing
What is automated visual regression testing? The name sounds scary, but in reality, the idea is fairly simple. If you have a user interface (UI),...
Automated Testing Tool Comparisons
Automated testing is rapidly gaining popularity across the web development field, and as expected, the number of automated testing tools is growing rapidly as well....