by Warren Gaebel
| Dec 29, 2011
Google/Yahoo Best Practices pointed out that Google and Yahoo created lists of best practices for website performance. Google and Yahoo are not alone. A recent web search for “performance tips for web applications”got over 30 million hits.It may be useful to break this topic down into subtopics. We could then classify tips according to subtopic, which would make it easier to find what we need. Instead of searching allthe tips, we could search only those that pertain to the problem we are facing. This article is my first attempt at creating a taxonomy (categorization) for this purpose. I will not be following the topic further in future articles, but perhaps this article will suggest an approach for those who do.
Chronological Basis
The first level of a taxonomy could start with the chronological chain of events that occur during an end-user’s transaction:
- the client issues the request,
- the request journeys to the server,
- the server processes the request,
- the server executes a script,
- the script requests services,
- the response journeys to the client,
- the page loads, and
- the client-side script executes.
If these events were processed serially, the overall response time would be the sum of the time spent at each link of the chain. This means that a slowdown in any one of these events will affect the overall response time. When the user perceives an unacceptable response time, it often means that only one, not all, of the above events are responsible. One event is often the weakest link in the chain.
Identifying the weakest link in the chain and fixing its problems gives us the best payback in terms of overall performance as a function of resources spent. If performance tips were classified according to the events they affect, it would be easier 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 exceptions, though. Example: A page can start to load before the entire web page has been received by the client.
If we can make any part of the above pro_cess asynchronous, that will improve performance, so this is another category we need to add to our taxonomy.
The Taxonomy
The left-hand column of the following table contains the nine categories introduced above. The right-hand column contains examples of tips that affect the categories to their left.
The tips are intended to aid in understanding the categories. They are not intended to be an exhaustive list, nor to be in sufficient detail to be usable. The detail will come in future articles.
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 future articles I will use the above taxonomy to present the best practices identified by Google, Yahoo, and others, which will help us see how tips affect each other (both positively and negatively).
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