It's seems ONLY javascript and css aren't caching ... but images are caching.

I'm using Firebug so when I refresh the page, I notice in Firebug lots of 200 HTTP reactions for js/css but am receiving 304 HTTP codes (content not modified) its my images. Therefore it seems that my JS and CSS aren't caching.

Also, when utilizing YSlow to assist determine the issue with my JS/CSS content not caching, it notifies me that:

You will find 4 components with misconfigured ETags

The following is my .htaccess file

Options -Indexes

Options +FollowSymLinks

# Enable ETag

FileETag MTime Size

# Set expiration header

ExpiresActive on

ExpiresDefault "access plus 7 daysInch

# Compress some text file types

AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml application/x-javascript text/javascript application/javascript application/json

# Deactivate compression for buggy browsers

BrowserMatch ^Mozilla/4 gzip-only-text/html

BrowserMatch ^Mozilla/4.[678] no-gzip

BrowserMatch bMSIE !no-gzip !gzip-only-text/html

# Set header information for proxies

Header append Vary User-Agent

Any idea wrong with my .htaccess access file stopping it from caching my CSS or JavaScript?

YSlow reviews misconfigured etags when they don't stick to a particular pattern. Since you are blending the css and js, the etags are now being output something similar to this:

Etag "1e10-4889909861a80"-gzip

Begin to see the -gzip in the finish? It's put there by apache (version 5 only). That's what's leading to the "error". YSlow needs to determine something similar to this:

Etag "xxxx-xxxxxxxxxxxxx"

Bascially, you cannot fix this since it is not damaged. So don't add too much looking to get an ideal score if you do not understand what your doing. Even that yahoo webpage only will get a 90.

Yes, it's correct and well-known behavior (not really needed).

Read http://world wide about ETag.

Most likely you need to just disable ETag on server.

Edit: Also, use LiveHTTPHeaders addon to know, what your browser does. It really works better then FireBug with this task.

I encounters exactly the same problem while you. Getting rid of the etag works.

Add the next within the config file: FileETag none

Hi I'd exactly the same trouble. But simply investing in FileETag none did not work

The way in which I fixed it (and I'm not sure if this sounds like correct - however it works) was I place the

FileETag none

at the end of my htaccess file.

Then ySlow was happy.

This YSlow error message is very misleading!

YSlow is really worrying that you're using ETags whatsoever!

YSlow runs inside your browser--it's not a way of knowing if ETags are set up properly or otherwise. Usually of thumb, it's stating that you should not use ETags since you may ask them to misconfigured than correctly set up inside a multi-server atmosphere. (And YSlow is targeted at customers with large, multi-server websites.)

Obviously, if you are on one-server setup, or maybe you are on the distributed server setup but understand what you are doing, then ETags are simply fine. But YSlow doesn't have method of knowing this.

There's plenty of discussion of the within the comments from the error description page that you ought to take a look at:

Also I discovered this answer on ServerFault that reiterates the purpose: