Everything about Web and Network Monitoring

Website Performance: Taxonomy of Tips

Google/Yahoo Best Practices point­ed out that Google and Yahoo cre­ated lists of best prac­tices for web­site per­for­mance.  Google and Yahoo are not alone.  A recent web search for “per­for­mance tips for web app­li­ca­tions”got over 30 million hits.It may be use­ful to break this topic down into sub­topics.  We could then clas­si­fy tips accor­ding to sub­topic, which would make it easier to find what we need.  In­stead of search­ing allthe tips, we could search only those that per­tain to the prob­lem we are facing.  This ar­ti­cle is my first at­tempt at cre­at­ing a tax­o­no­my (ca­te­gor­i­za­tion) for this pur­pose.  I will not be fol­low­ing the topic fur­ther in fu­ture ar­ti­cles, but per­haps this ar­ti­cle will sug­gest an ap­proach for those who do.

Chronological Basis

The first level of a tax­onomy could start with the chro­no­lo­gi­cal chain of e­vents that oc­cur dur­ing an end-user’s tran­sac­tion:

  1. the client issues the request,
  2. the request journeys to the server,
  3. the server processes the request,
    1. the server executes a script,
    2. the script requests services,
  4. the response journeys to the client,
  5. the page loads, and
  6. the client-side script executes.

If these events were processed serially, the over­all re­sponse time would be the sum of the time spent at each link of the chain.  This means that a slow­down in any one of these e­vents will affect the over­all re­sponse time.  When the user per­ceives an un­ac­cept­able re­sponse time, it often means that on­ly one, not all, of the above events are re­spon­si­ble.  One event is often the weak­est link in the chain.

Identify­ing the weak­est link in the chain and fixing its problems gives us the best pay­back in terms of over­all per­for­mance as a function of resources spent.  If per­for­mance tips were clas­si­fied ac­cor­ding to the events they af­fect, it would be ea­si­er to focus in on the tips that give us the most bang for our buck.

Synchronicity

The above chain of events is mostly serial.  There are ex­cep­tions, though.  Example:  A page can start to load be­fore the en­tire web page has been re­ceived by the client.

If we can make any part of the above pro_cess asyn­chro­nous, that will im­prove per­for­mance, so this is another ca­te­gory we need to add to our tax­o­no­my.

The Taxonomy

The left-hand column of the fol­low­ing ta­ble con­tains the nine ca­te­gories in­tro­duced above.  The right-hand column con­tains ex­am­ples of tips that af­fect the ca­te­gories to their left.

The tips are in­tend­ed to aid in un­der­stand­ing the ca­te­gories.  They are not in­tend­ed to be an ex­haus­tive list, nor to be in suf­fi­cient de­tail to be usable.  The detail will come in fu­ture ar­ti­cles.

Event/Category            Examples of Tips
------------------------  -------------------------------------------------
client issues request     browser configuration; client machine performance
journey to server         number of cookies; number of DNS lookups
server processes request  avoid redirects and rewrites; devoted machine
server-side script        PHP tips
service requests          MySQL tips
journey to client         delay cache expiry; optimize images; compression
page load                 loading CSS and JavaScript; flush the buffer
client-side script        number of DOM elements and accesses
synchronicity             postload components; distributed processing

Future Articles

In fu­ture ar­ti­cles I will use the above tax­o­no­my to pre­sent the best prac­ti­ces iden­ti­fied by Google, Yahoo, and others, which will help us see how tips af­fect each oth­er (both po­si­tively and ne­ga­tively).

References

Best Practices for Speeding Up Your Web Site by Yahoo’s Exceptional Performance Team.  Published by Yahoo at developer.yahoo.com/performance/rules.html.  Accessed 2011.11.30.

Web Performance Best Practices.  Published by Google at code.google.com/speed/page-speed/docs/rules_intro.html.  Accessed 2011.11.30.

Try Paid Monitor For Free.  A 15-day free trial.  Your opportunity to see how easy it is to use the Paid Monitor cloud-based monitoring system.  Credit card not required.

The Paid Monitor Exchange at GitHub.  This is the official repository for scripts, plugins, and SDKs that make it a breeze to use the Paid Monitor system to its full potential.

Post Tagged with

About Warren Gaebel

Warren wrote his first computer program in 1970 (yes, it was Fortran).  He earned his Bachelor of Arts degree from the University of Waterloo and his Bachelor of Computer Science degree at the University of Windsor.  After a few years at IBM, he worked on a Master of Mathematics (Computer Science) degree at the University of Waterloo.  He decided to stay home to take care of his newborn son rather than complete that degree.  That decision cost him his career, but he would gladly make the same decision again. Warren is now retired, but he finds it hard to do nothing, so he writes web performance articles for the Monitor.Us blog.  Life is good!