<div dir="ltr">Hi,<br><br>I've been pondering on this for a while and I finally convinced myself that Varnish is doing it wrong.  If http_gzip_support is enabled and the object is gzip'd we must add a Vary on Accept-Encoding on delivery to keep intermediary caches happy.<br>
<br>This is done before vcl_deliver is called so it's possible to remove it before delivering although I can't see why anyone might want to do this.<br><br>Alternatively we could add a parameter, e.g. http_gzip_vary, to controls this but I'm not in favour of adding more knobs. ymmv.<br>
<br>Comments? OKs?<br><br>FWIW, nginx support this via gzip_vary (1). It's also mentioned in Google's Optimizing caching docs (2) and in maxcdn blog post (3).<br><br>f.-<br><br>1. <a href="http://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_vary">http://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_vary</a><br>
2. <a href="https://developers.google.com/speed/docs/best-practices/caching">https://developers.google.com/speed/docs/best-practices/caching</a><br>3. <a href="http://blog.maxcdn.com/accept-encoding-its-vary-important/">http://blog.maxcdn.com/accept-encoding-its-vary-important/</a><br>
<br></div>