Last year I commented on how mod_deflate breaks the cache validation model. Essentially the problem has been addressing two issues:
- Apache bug #39727, RFC 2616 requires unique strong entity tags for every entity. Presumably this means after Content-Encoding (but not Transfer-Encoding). The fix was for deflate to add “-gzip” to the ETag.
- Apache bug #45023 concerns Apache not being able to recognise the transformed ETag (with the -gzip) as the same entity, and hence not sending 304s when it should have.
So in January 2008, a change was committed to fix #39727, which introduced #45023. Now in April this year, it was reversed to fix #45023. I agree with the priorities here; no caching is much worse for web performance.
As Roy Fielding pointed out the correct way to deal with this issue is to stop abusing Content-Encoding for performance-compression and start using Transfer-Encoding; pity browsers and HTTP servers haven’t got there yet.