Varnish 会将压缩的 obj 保存在缓存中,但是当客户端不支持 gzip 时。
Varnish 如何处理它?它是否也将其他未压缩的 obj 保存在 Cache 中,或者解压缩压缩的 obj?
Varnish 会将压缩的 obj 保存在缓存中,但是当客户端不支持 gzip 时。
Varnish 如何处理它?它是否也将其他未压缩的 obj 保存在 Cache 中,或者解压缩压缩的 obj?
Varnish 3.0 支持 Gzip,如官方教程的“压缩”一章中所述。对后端的所有 HTTP 请求都将包含对 gzip 内容的请求,因此默认情况下,所有对象都存储在 gzip 的内存中。
如果后端不支持 gzip,你可以通过设置beresp.do_gzip
in让 Varnish 在存储之前压缩响应vcl_fetch
。
如果来自不支持 gzip 的客户端的请求,Varnish 将在交付之前对存储的对象进行压缩。
Varnish 2.x 不压缩或解压缩:如果客户端支持 Gzip,它将在缓存中保存一个 gzip 版本的页面。如果客户端不支持它,则将在缓存中放置另一个副本以用于纯内容,而不进行压缩。
所以是的:根据 Accept-Encoding 标头(应该标准化),对于每个支持的压缩算法,一个页面的多个版本将保存在缓存中。
*更新:为清楚起见进行了编辑,以上仅适用于 Varnish 2.0 或 2.1。Varnish 3.x 支持 gzip,如上所述。