The deflate output filter in Apache breaks Apache’s handling of the HTTP cache validation model. It won’t send an HTTP 304 status if mod_deflate is actively filtering the response, even if the Etag and Last-Modified allow it to. I asked, and apparently this is a known issue. I might have to wait until after exams before making a patch for this one.
In its current state, this introduces a tradeoff for large, uncompressed static files (like CSS and Javascript):
- gzip stuff, and you improve site performance the first time someone visits, but it never gets any faster.
- allow Apache to send 304 statuses, let the user have a slow load on their first visit, but celebrate as they hit their cache thereafter
The second option looks more attractive.