Basically run an audit on my small sites with Google Chrome, I recieve this message within the Leverage browser caching section:

The next assets are missing a cache expiration. Assets that not specify an expiration might not be cached by browsers:

A listing of all of the pictures follows. I recieve an identical notice in Leverage proxy caching:

Attempt to add a "Cache-Control: public" header towards the following assets:

Aside from pictures, I additionally obtain a notice about HTML, CSS and JavaScript files:

The next assets are clearly non-cacheable. Think about making them cacheable if at all possible:

Its funny because I have labored tough to cache all static contents (aside from pictures, where I simply left Apache's default configurations). Opera truly does store each one of these products in cache.

Can there be anything I ought to improve during my HTTP headers?


Here's the entire header group of some products as loaded after getting rid of the browser caché. Pictures use default configurations I did not really check before, the relaxation ought to be cachéd for 3 hrs. I'm able to set headers with both .htaccess and PHP.

PNG

HTTP/1.1 200 OK

Date: Sitting, 31 Jul 2010 12:46:14 GMT

Server: Apache

Last-Modified: Thu, 18 Marly 2010 21:40:54 GMT

Etag: "c48024-230-4821a15d6c580"

Accept-Ranges: bytes

Content-Length: 560

Keep-Alive: timeout=4

Connection: Keep-Alive

Content-Type: image/png

HTML

HTTP/1.1 200 OK

Date: Sitting, 31 Jul 2010 12:46:13 GMT

Server: Apache

X-Powered-By: PHP/5.2.11

Expires: Sitting, 31 Jul 2010 15:46:13 GMT

Cache-Control: max-age=10800, s-maxage=10800, must-revalidate, proxy-revalidate

Content-Encoding: gzip

Vary: Accept-Encoding

Last-Modified: Get married, 24 Marly 2010 20:30:36 GMT

Keep-Alive: timeout=4

Connection: Keep-Alive

Transfer-Encoding: chunked

Content-Type: text/html charset=ISO-8859-15

CSS

HTTP/1.1 200 OK

Date: Sitting, 31 Jul 2010 12:48:21 GMT

Server: Apache

X-Powered-By: PHP/5.2.11

Expires: Sitting, 31 Jul 2010 15:48:21 GMT

Cache-Control: max-age=10800, s-maxage=10800, must-revalidate, proxy-revalidate

Content-Encoding: gzip

Vary: Accept-Encoding

Last-Modified: Thu, 18 Marly 2010 21:40:12 GMT

Keep-Alive: timeout=4

Connection: Keep-Alive

Transfer-Encoding: chunked

Content-Type: text/css

JavaScript

HTTP/1.1 200 OK

Date: Sitting, 31 Jul 2010 12:48:21 GMT

Server: Apache

X-Powered-By: PHP/5.2.11

Expires: Sitting, 31 Jul 2010 15:48:21 GMT

Cache-Control: max-age=10800, s-maxage=10800, must-revalidate, proxy-revalidate

Content-Encoding: gzip

Vary: Accept-Encoding

Last-Modified: Thu, 18 Marly 2010 21:40:12 GMT

Keep-Alive: timeout=4

Connection: Keep-Alive

Transfer-Encoding: chunked

Content-Type: application/x-javascript


Update

I have examined Jumby's suggestion and hang my CSS's expire to at least one year:

Cache-Control:max-age=31536000, s-maxage=31536000, must-revalidate, proxy-revalidate

Connection:Keep-Alive

Content-Encoding:gzip

Content-Length:4198

Content-Type:text/css

Date:Mon, 02 August 2010 20:48:56 GMT

Expires:Tue, 02 August 2011 20:48:56 GMT

Keep-Alive:timeout=5, max=99

Last-Modified:Thu, 18 Marly 2010 20:40:12 GMT

Server:Apache/2.2.14 (Win32) PHP/5.3.1

Vary:Accept-Encoding

X-Powered-By:PHP/5.3.1

However, Chrome still claims "clearly non-cacheable".

3 hour expiry is probably not enough "time" for that yslow/page speed stuff plus they might complain about this. I've come across this with static content on my small sites with 4 hour expiration &lifier yslow (havent attempted with google's stuff).

The majority of individuals want versioned static quite happy with Lengthy expire occasions (like 12 months) see here

The issue is the "must-revalidate" a part of your cache-control directive. Eliminate that, and you ought to be all set.