On 22/01/11 19:22, Jonathan Wolfe wrote:
First, request and reply headers for a cached version, as gzip isn't included 
in the Accept-Encoding header.

Request:

GET /styles/media.css HTTP/1.1
User-Agent: httperf/0.9.0
Host: www.example.com
Accept-Encoding: deflate

Reply:

HTTP/1.0 200 OK
Cache-Control: max-age=86400
Expires: Sun, 23 Jan 2011 06:06:04 GMT
Vary: Accept-Encoding
Last-Modified: Thu, 30 Jul 2009 11:30:14 GMT
Mime-Version: 1.0
Date: Sat, 22 Jan 2011 06:06:04 GMT
Server: AOLserver/4.5.1
Content-Type: text/css; charset=utf-8
Content-Length: 2654
Age: 1
X-Cache: HIT from www.example.com
X-Cache-Lookup: HIT from www.example.com:80
Via: 1.0 www.example.com (squid/3.1.10)
Connection: keep-alive


Now, request and reply headers when accepting gzip.

Request:

GET /styles/media.css HTTP/1.1
User-Agent: httperf/0.9.0
Host: www.example.com
Accept-Encoding: gzip,deflate

Reply:

HTTP/1.0 200 OK
Cache-Control: max-age=86400
Expires: Sun, 23 Jan 2011 06:06:08 GMT
Vary: Accept-Encoding
Last-Modified: Thu, 30 Jul 2009 11:30:14 GMT
Mime-Version: 1.0
Date: Sat, 22 Jan 2011 06:06:08 GMT
Server: AOLserver/4.5.1
Content-Type: text/css; charset=utf-8
Content-Encoding: gzip
X-Cache: MISS from www.example.com
X-Cache-Lookup: MISS from www.example.com:80
Via: 1.0 www.example.com (squid/3.1.10)
Connection: keep-alive

I see that the gzipped version doesn't reply with a Content-Length header.

Not nice, but fine. The connection should get closed after the object despite the keep-alive. If not that is another bug.


Tried with Firefox for a more standard request, exactly the same response 
headers.

Regards,
Jonathan Wolfe

Ah, sorry. I'm not sure what has happened to my mind these last few days. I think that is a perfectly normal and working set of transactions with nothing to do with the ecap module.


Vary in Squid is currently treated as an exact-match text key. So when asked for a "gzip,deflate" variant Squid does not have enough smarts to serve the "deflate" variant. So it MISSes and gets a fresh one, which may or may not be gzipped, but is served gzipped to the client anyway.


When passing the second request through squid twice in a row does the reply change from a MISS to a HIT? or stay a MISS?

Squid caches only one of N variants so the expected behviour is that each new variant is a MISS but becomes a HIT on repeated duplicate requests until a new variant pushes it out of cache.


I think one of two things are needed to make this work nicely:
(1) request modification to normalize and add "gzip" to the Accept-Encoding header prior to the cache variant lookup
  (2) de-zipping for clients who can't accept gzip
  (3) zipping for clients who can but are sent a un-zipped version

I gather that (3) is occurring. But some variant has entered your cache due to (1) not being done.


NOTE: patches very welcome to make Squid treat "deflate" as a subset of "gzip,deflate" when finding variants. It's a bit trickier than it sounds though. One will have to alter the variant key syntax to store the variant with the Content-Encoding type instead of the full Accept-Encoding header. Then check for all options in the client Accept-Encoding header when looking up the hash.

Amos
--
Please be using
  Current Stable Squid 2.7.STABLE9 or 3.1.10
  Beta testers wanted for 3.2.0.4

Reply via email to