Hi

> On 4 Jun 2015, at 08:16, Xavier Noria <[email protected]> wrote:
> 
> I have used gzip_static for some years without any issue that I am aware of 
> with the default gzip_vary off.
> 
> My reasoning is that the HTTP spec says in
> 
>     http://tools.ietf.org/html/rfc2616#page-145
> 
> that "the Vary field value advises the user agent about the criteria that 
> were used to select the representation", and my understanding is that 
> compressed content is not a representation per se. The representation would 
> be the result of undoing what Content-Encoding says.

This is fine to do. However, there's a chance a proxy may cache an uncompressed 
version if a client does not support compression and its response ends up in a 
proxy cache. Any subsequent user also behind that cache, even if it accepts 
compression, would be served it uncompressed in most cases.

> So, given the same .html endpoint you could for example serve content in a 
> language chosen according to Accept-Language. That's a representation that 
> depends on headers in my understanding. If you serve the same .css over and 
> over again no matter what, the representation does not vary. The compressed 
> thing that is transferred is not the representation itself, so no Vary needed.
> 
> Do you guys agree with that reading of the spec?

This bit of the spec (same page at bottom) explains it better I think:

An HTTP/1.1 server SHOULD include a Vary header field with any cacheable 
response that is subject to server-driven negotiation. Doing so allows a cache 
to properly interpret future requests on that resource and informs the user 
agent about the presence of negotiation on that resource.

I would say compression is a server driven negotiation. I would also say, based 
on my understanding, that when the spec says representation it means including 
encoding such as compression. That is, you can represent a resource with gzip 
or without gzip.


> Then, you read posts about buggy proxy servers. Have any of you founded a 
> real (modern) case in which the lack of "Vary: Accept-Encoding" resulted in 
> compressed content being delivered to a client that didn't support it? Or are 
> those proxies mythical criatures as of today?

Proxy are bound by the spec too so yes it would be a buggy proxy. They can't 
send a Content-Encoding gzip unless the client sends Accept-Encoding. I'm not 
entirely sure what would happen though - I guess either bypass the compressed 
cache version or replace it uncompressed. Most likely up to the proxy 
implementation.

Jason
_______________________________________________
nginx mailing list
[email protected]
http://mailman.nginx.org/mailman/listinfo/nginx

Reply via email to