I’m going to answer the 2nd part of your question, How do I make it compress all responses where the request had an appropriate Accept-Encoding header?
You do it with HTTPModules.
Here is one way using Ionic.Zlib. The module prefers to send RAW DEFLATE content because it is ALWAYS faster and ALWAYS smaller than than GZIP (why?).
A more complete solution is now hosted on github https://github.com/davidmurdoch/DEFLATE-Compression-for-IIS .