For my site, Firefox 32.0 seems not to cache a CSS file of my Nikola 7.1.0 installation and ignores the 304 Not Modified response by the webserver. What also puzzles me, is that it sends the 2nd request with a different Accept: header.
Chrome 37.0 does not show this behaviour and only requests the file once.
The first HTTP request Firefox sends is:
GET /assets/css/all-nocdn.css HTTP/1.1
Accept: text/css,*/*;q=0.1
Accept-Encoding: gzip, deflate
Accept-Language: en-GB,en;q=0.5
Authorization: …
Cache-Control: max-age=0
Connection: keep-alive
Host: …
If-Modified-Since: Mon, 14 Jul 2014 09:12:55 GMT
If-None-Match: "2838446235"
Referer: …
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:32.0) Gecko/20100101 Firefox/32.0
HTTP/1.1 304 Not Modified
Content-Type: text/css
Date: Fri, 12 Sep 2014 07:18:02 GMT
ETag: "2838446235"
Last-Modified: Mon, 14 Jul 2014 09:12:55 GMT
Server: lighttpd/1.4.35
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Vary: Accept-EncodingAnd the next HTTP request is:
GET /assets/css/all-nocdn.css HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-GB,en;q=0.5
Authorization: …
Cache-Control: no-cache
Connection: keep-alive
Host: …
Pragma: no-cache
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:32.0) Gecko/20100101 Firefox/32.0
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Encoding: gzip
Content-Length: 22700
Content-Type: text/css
Date: Fri, 12 Sep 2014 07:26:42 GMT
ETag: "2838446235"
Last-Modified: Mon, 14 Jul 2014 09:12:55 GMT
Server: lighttpd/1.4.35
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Vary: Accept-Encoding
…(I actually replayed this using HTTPie, because Firefox does not allow to copy the server response as a whole. Copying the request headers is possible by clicking "Edit and Resend".)
What could be reasons for that behaviour? Does Firefox offer a way to see the reason for a HTTP request? (What Chrome calls "initiator".)
Please have a look at my Screenshot of the Network section of the Firefox Developer Toolbar to see an overview of all requests in the timeline: