There is a lot of discussion on ETags. For those who don’t know, read:
However, ETags can become a problem when you run a cluster/farm, so each request to unique server returns a different ETag. Some of this has been fixed in IIS 7. Also, it seems, if you are using the Expiry (a better practice), having ETags results in a worse YSlow rating.
Our YSlow Rating was 68. We added Expire Header info, and the score went to 85. However, upon turning off ETags, we jumped further to 88.
Unfortunately, there didnt seem to be any good way to disable ETags on IIS 6. Most posts and articles referenced working the IIS Metabase, and still there was a MS Hotfix for those where the MetaBase edit would not stick. Ugh.
I wasn’t sure I wanted to do all that just for 3 point in YSlow, until I came across this site. See: http://blogs.iis.net/chrisad/archive/2006/12/18/iis7-deployments-calls-for-etag-usage-review-if-using.aspx. The site itself covers IIS 7, and was useless to me, until I saw the last comment.
“Remove ETags from the Http Response by setting a blank ETag header. In IIS Manager, right click Web Site (or any folder), click Properties, select HttpHeaders tab, add Custom Http Header called ETag but leave the value blank.”
Although this would still return an ETag in the HTTP Header, I tried this an voila, it worked. So simple, it was stupid! And now we’re getting an “A” in the ETags area in YSlow, and a better overall score.