I believe it is because the browser is not sending a If-Modified-Since during the Request, right?
Do I need to change something in the initial Response headers to make 304s happen?
Yes. If you compare original response headers for those resources that have 304 response code on subsequent requests, you will notice:
- All of them located in
- They have "Etag", "Expires" and "Last-Modified" headers
The first moment tells that most likely there is .htaccess file in that folder that sets those headers (or separate section elsewhere in config file for that folder).
If you look at request headers for those resources with 304 response code, you will see the presence of "If-Modified-Since" and "If-None-Match" headers. Based on those "If-*" headers Apache decides how to reply to the request. I'm sure -- now you can see a pattern here -- very easy to spot which values where used and where.
Expires: Thu, 14 Jun 2012 18:24:24 GMT
Last-Modified: Wed, 20 Apr 2011 17:29:45 GMT
If-Modified-Since: Wed, 20 Apr 2011 17:29:45 GMT