Caching issue

Dag-Erling Smørgrav des at linpro.no
Tue Mar 11 10:22:58 CET 2008


"Poul-Henning Kamp" <phk at phk.freebsd.dk> writes:
> You could try the following in vcl_recv:
>
> 	if (req.http.accept-encoding) {
> 		set req.http.accept-encoding = regsub(
> 		    req.http.accept-encoding,
> 		    "gzip, *", "gzip,");
> 	}
>
> to get rid of the space(s), but it is not guaranteed to get all cases.
>
> Alternatively, the more brutal:
>
> 	if (req.http.accept-encoding ~ "gzip") {
> 		set req.http.accept-encoding = "gzip";
> 	} else {
> 		unset req.http.accept-encoding;
> 	}
>
> Will get the desired effect in all cases, provided your backend does
> not attempt deflate as fallback.

A slightly more complex solution, to cover all bases without losing
functionality:

set req.http.accept-encoding = regsub(req.http.accept-encoding,
    "^ *gzip, *deflate *$", "gzip,deflate");
set req.http.accept-encoding = regsub(req.http.accept-encoding,
    "^ *deflate, *gzip *$", "gzip,deflate");

This should take care of >99% of cases; I don't know of any browser that
supports only one of the two, or supports anything *but* those two.

However, Apache only supports gzip, so Poul-Henning's solution is
sufficient in this case.

DES
-- 
Dag-Erling Smørgrav
Senior Software Developer
Linpro AS - www.linpro.no



More information about the varnish-dev mailing list