YSlow works in three phases to generate its results.
- YSlow crawls the DOM to find all the components (images, scripts, stylesheets, etc.) in the page. After crawling the DOM, YSlow loops through Firebug’s Net Panel components and adds those to the list of components already found in the DOM
- YSlow gets information about each component: size, whether it was gzipped, Expires header, etc. YSlow gets this information from Firebug’s Net Panel if it’s available. If the component’s information is not available from Net Panel (for example, the component was read from cache or it had a 304 response) YSlow makes an XMLHttpRequest to fetch the component and track its headers and other necessary information.
- YSlow takes all this data about the page and generates a grade for each rule, which produces the overall grade.