FileETag none
I have a "B" now because the Developer Circuit widget still has an ETag.
An "F" in Expires header scoring became a "D" after I enabled Expires headers for CSS and images (again, in .htaccess):
ExpiresActive On
ExpiresByType text/css "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
My Gzip components scored improved to a "B" by adding a directive to deflate CSS:
ExpiresByType text/css "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
AddOutputFilterByType DEFLATE text/css
Another tweak I made that seemed to help was adding defer="defer" to the Developer Circuit JavaScript include - the only third-party JS left on my site now.
The only remaining "red flag" - my one remaining "F" - is the recommendation to use a CDN which isn't really available for free to folks like you and me.
If Developer Circuit adds a few Expires headers, enables Gzip and disables ETags then my site will get faster still but I'm impressed with what I've been able to do in a short space of time.
Thanx Yahoo!
p.s. Also thanx to John Farrar who was the first person to notify me about YSlow!

17 responses so far ↓
1 Rick Mason // Jul 25, 2007 at 6:23 PM
Your page isn't displaying in IE7. It comes up for a millisecond and then displays the jobs widget in the upper left.
Looks OK though in Firefox
2 Sean Corfield // Jul 25, 2007 at 6:35 PM
Guess I'll have to prod Vista into action and see what has broken... *sigh* ...I *hate* Microsoft's incompetence and shoddy software.
3 Scott Stroz // Jul 25, 2007 at 7:07 PM
http://developer.yahoo.com/performance/rules.html
Which explains the criteria being used scores a 67
4 Peter TIlbrook // Jul 25, 2007 at 8:20 PM
5 Sean Corfield // Jul 25, 2007 at 8:28 PM
6 Cutter // Jul 25, 2007 at 11:43 PM
7 Michael Sharman // Jul 25, 2007 at 11:56 PM
8 Patrick Whittingham // Jul 26, 2007 at 3:28 AM
How would one use 'Expire headers' for JS/CSS for IIS 5-7, so I can tell my Sys Admin?
9 Sean Corfield // Jul 26, 2007 at 6:31 AM
@Patrick, I never use IIS so you'll have to do what I did to learn about Expires headers in Apache: use Google. Did you read my post about asking questions the smart way? :)
10 Damien McKenna // Jul 26, 2007 at 8:23 AM
# disable ETags
FileETag none
# mod_deflate - GZip compression
# Insert filter
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xhtml+xml application/xslt+xml application/xml application/xml-dtd
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/x-javascript
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
# the above regex won't work. You can use the following
# workaround to get the desired effect:
#BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \.(?:gif|jpeg|jpg|tiff|tif|png|mov|wmv|mp3|zip)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
# content expiration
ExpiresActive On
# css - don't cache for very long!
ExpiresByType text/css "access plus 10 minutes"
# media formats
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType video/quicktime "access plus 1 month"
ExpiresByType audio/mpeg "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/mpeg "access plus 1 month"
ExpiresByType video/x-msvideo "access plus 1 month"
ExpiresByType video/x-ms-wmv "access plus 1 month"
ExpiresByType video/x-ms-wvx "access plus 1 month"
# javascript
# production: custom libraries
<Directory ~ "/Production/(.*)/(js|plugins)/">
ExpiresByType application/x-javascript "access plus 1 week"
</Directory>
# production: common libraries
<Directory ~ "/Production/(.*)/(js|plugins)/(prototype|script\.aculo\.us)">
ExpiresByType application/x-javascript "access plus 1 month"
</Directory>
# development: custom libraries
<Directory ~ "/Development/(.*)/(js|plugins)/">
ExpiresByType application/x-javascript "access plus 10 minutes"
</Directory>
# development: common libraries
<Directory ~ "/Development/(.*)/(js|plugins)/(prototype|script\.aculo\.us)">
ExpiresByType application/x-javascript "access plus 1 day"
</Directory>
Don't forget to activate mod_deflate, mod_expires and mod_setenvif to be able to use the above.
11 jorge // Jul 26, 2007 at 8:36 AM
12 Matt Osbun // Jul 26, 2007 at 9:11 AM
I can't get GZip to work for anything, but since I'm playing with this on a Windows XP box with a cut-down version of IIS 5.1, this does not surprise me much. The Expires header and ETags are hit and miss, but ditto on the likely reason why.
I did, however, minify my Scriptaculous .js files, which is showing a nice performance boost. If anyone's interested, I put the minified files and a quick blog post on www.pteradactylcry.com.
13 zuborg // Sep 11, 2008 at 8:47 AM
It measure loading speed of page and it's requisites (images/js/css) like browsers do and shows nice detailed chart - so you can easily spot bottlenecks.
Also very useful thing is that this tool is able to verify network quality of your server (packet loss level and ping delays).
14 Sean Corfield // Sep 11, 2008 at 9:29 AM
15 Mikhailov Anatoly // Dec 16, 2008 at 8:13 PM
http://railsgeek.com/2008/12/16/apache2-httpd-improving-performance-mod_deflate-gzip
16 Sherman Boyd // Feb 21, 2009 at 12:01 PM
Thanks for posting your configs! That was really helpful. I found you can shorten them using this syntax:
ExpiresByType image/* "access plus 1 month"
17 Jessi Hance // May 26, 2009 at 3:25 PM
Leave a Comment