We do not currently use Expire headers, I was going to recommend it but forcing our large development team/business to change their practices and rename static files with each new release isn't going to be easy to get updated files.
I ran YSlow and we get an F for Etags, "There are 24 components with misconfigured ETags". The Apache httpd.conf does not have Etags manually configured so it appears we are using the default settings. (FileETag INode MTime Size). When I visit our site and then hit refresh I can see Etags appear to be working pretty well:
One image example: If-Modified-Since: Sat, 23 Jul 2011 02:05:28 GMT If-None-Match: "21246-eb05-4a8b30415ea00" Cache-Control: max-age=0
HTTP/1.1 304 Not Modified Date: Tue, 06 Sep 2011 20:59:29 GMT Server: IBM_HTTP_Server Connection: Keep-Alive Keep-Alive: timeout=6 Etag: "21246-eb05-4a8b30415ea00"
1) I see a "304 Not Modified" for image files,js,html,etc on our landing page. Why does Yslow say we have some misconfigured Etags when they are all configured with the same default Apache configuration? The YSlow report mentions these same file types..
2) We have an F5 Load balancer between multiple Apache webservers, we use sticky bits which is why I think the Apache inode Etag is not bothering us too much. But if a user comes back tomorrow and hits another webserver we will lose the cache option correct because they indode will be different? Should we change the httpd.conf and remove the Etag inode variable from all webservers?
Sorry for the length! Thanks