Re: [squid-users] Squid-2.7STABLE7: problem with Vary

From: Amos Jeffries <squid3_at_treenet.co.nz>
Date: Sat, 20 Mar 2010 14:29:08 +1300

Krzysztof Olędzki wrote:
> Hello,
>
> I'm have been trying to configure Squid to store and provide two
> versions of the same obiect, but so far with no luck.
>
> I configured my load balancer to append an additional header to
> a request depending on a client status, something like:
> "X-ASP-CFlag: Yes" or "X-ASP-CFlag: No"
>
> I also configured my servers to append "Vary: X-ASP-CFlag" and to
> set a different ETag for both responses.
>
> Squid is able to cache such responses and always provide a correct
> version, so I believe I did everyting correct releated to handling
> Vary & ETag.
>
> My problem is that each time, when a different type of client comes,
> the object is RELEASED and Squid fetches a new one. So, Squid
> is able to provide a cached version of such obiect as long as
> consecutive requests come from the same type of a client. If they comes
> from the different type, then I get 0% hit rate. :(

Is Vary always set regardless of X-ASP-CFlag presence?
missing X-ASP-CFlag is considered to be one of the three variant cases
by Squid (missing, "Yes", "No").

Is the ETag the same for both variants?

What does Cache-Control: header contain for each/both?

>
> 1269025015.033 23 192.168.162.1/192.168.152.2 TCP_MISS/200 16857 GET http://www.example.com/xml/EF.001.xml - FIRST_UP_PARENT/192.168.162.1 text/xml
> 1269025022.400 27 192.168.162.1/192.168.152.2 TCP_MEM_HIT/200 16886 GET http://www.example.com/xml/EF.001.xml - NONE/- text/xml
> 1269025022.863 81 192.168.162.1/192.168.152.2 TCP_MEM_HIT/200 16886 GET http://www.example.com/xml/EF.001.xml - NONE/- text/xml
> 1269025022.967 25 192.168.162.1/192.168.152.2 TCP_MEM_HIT/200 16886 GET http://www.example.com/xml/EF.001.xml - NONE/- text/xml
> 1269025023.456 1 192.168.162.1/192.168.152.2 TCP_MEM_HIT/200 16886 GET http://www.example.com/xml/EF.001.xml - NONE/- text/xml
> 1269025024.015 21 192.168.162.1/192.168.152.2 TCP_MEM_HIT/200 16886 GET http://www.example.com/xml/EF.001.xml - NONE/- text/xml
> 1269025024.101 16 192.168.162.1/192.168.152.2 TCP_MEM_HIT/200 16887 GET http://www.example.com/xml/EF.001.xml - NONE/- text/xml
> 1269025025.836 1 192.168.162.1/192.168.152.2 TCP_MEM_HIT/200 16887 GET http://www.example.com/xml/EF.001.xml - NONE/- text/xml
> 1269025028.506 27 192.168.162.1/192.168.152.2 TCP_MISS/200 100934 GET http://www.example.com/xml/EF.001.xml - FIRST_UP_PARENT/192.168.162.1 text/xml

... client B first request.

> 1269025031.030 37 192.168.162.1/192.168.152.2 TCP_MISS/200 16904 GET http://www.example.com/xml/EF.001.xml - FIRST_UP_PARENT/192.168.162.1 text/xml
> 1269025033.208 11 192.168.162.1/192.168.152.2 TCP_MISS/200 100934 GET http://www.example.com/xml/EF.001.xml - FIRST_UP_PARENT/192.168.162.1 text/xml

... client B second request.

Notice how the object size keeps changing with each TCP_MISS. Might be
related.

>
> According to the store.log I have:
>
> - request from a client type "A":
> 1269025015.023 RELEASE 00 00032DDE 3670265D41E40D46FB58467B0A406016 200 1269025002 1268659805 1269025062 text/css -1/16369 GET http://www.example.com/css/EF.001.css
> 1269025015.023 SWAPOUT 00 000332CA 26DF93F5ACF8EFF960D1ABD01F1D9509 200 1269025015 -1 1269125015 x-squid-internal/vary -1/220 GET http://www.example.com/css/EF.001.css
> 1269025015.023 RELEASE 00 00032F03 BA73564A12C40FB51174FE3CD14F2BDA 200 1269025005 -1 1269125005 x-squid-internal/vary -1/220 GET http://www.example.com/css/EF.001.css
> 1269025015.033 SWAPOUT 00 000332CC E3A743051428428E9D4D45836CB2719C 200 1269025014 1268659805 1269025074 text/css -1/16338 GET http://www.example.com/css/EF.001.css
>
> - request from a client type "B":
> 1269025028.491 RELEASE 00 00032F04 F7F9BF630687B86AFAA4D5CD729E6F15 200 1269025005 1268659805 -1 text/xml 100483/100483 GET http://www.example.com/xml/EF.001.xml
> 1269025028.491 SWAPOUT 00 00033BEA 26DF93F5ACF8EFF960D1ABD01F1D9509 200 1269025028 -1 1269125028 x-squid-internal/vary -1/220 GET http://www.example.com/xml/EF.001.xml
> 1269025028.491 RELEASE 00 000332CA 80E0AD812ADE72183FD2BF19D3D1F251 200 1269025015 -1 1269125015 x-squid-internal/vary -1/-218 GET http://www.example.com/xml/EF.001.xml
> 1269025028.506 SWAPOUT 00 00033BF0 A070DC36FD8ED3452573EE7DC398DF53 200 1269025028 1268659805 1269025088 text/xml 100483/100483 GET http://www.example.com/xml/EF.001.xml
>
> - request from a client type "A":
> 1269025031.015 RELEASE 00 000332CC BCB90FADA1A3A323B25925C4776B64AB 200 1269025014 1268659805 1269025074 text/xml -1/16338 GET http://www.example.com/xml/EF.001.xml
> 1269025031.015 SWAPOUT 00 00033D2D 26DF93F5ACF8EFF960D1ABD01F1D9509 200 1269025031 -1 1269125031 x-squid-internal/vary -1/220 GET http://www.example.com/xml/EF.001.xml
> 1269025031.015 RELEASE 00 00033BEA C4D3004363864A9BC877E75165903539 200 1269025028 -1 1269125028 x-squid-internal/vary -1/220 GET http://www.example.com/xml/EF.001.xml
> 1269025031.028 SWAPOUT 00 00033D2A E3A743051428428E9D4D45836CB2719C 200 1269025030 1268659805 1269025090 text/xml -1/16385 GET http://www.example.com/xml/EF.001.xml
>
> - request from a client type "B":
> 1269025033.204 RELEASE 00 00033BF0 4A2CE9062319A7E381086826978BCBB3 200 1269025028 1268659805 1269025088 text/xml 100483/100483 GET http://www.example.com/xml/EF.001.xml
> 1269025033.204 SWAPOUT 00 00033EE7 26DF93F5ACF8EFF960D1ABD01F1D9509 200 1269025033 -1 1269125033 x-squid-internal/vary -1/220 GET http://www.example.com/xml/EF.001.xml
> 1269025033.204 RELEASE 00 00033D2D C5D2959AD4FB3A19CB4333A21A85A3F9 200 1269025031 -1 1269125031 x-squid-internal/vary -1/-218 GET http://www.example.com/xml/EF.001.xml
> 1269025033.208 SWAPOUT 00 00033EE8 A070DC36FD8ED3452573EE7DC398DF53 200 1269025032 1268659805 1269025092 text/xml 100483/100483 GET http://www.example.com/xml/EF.001.xml
>
> And so on...
>
> So, the question is: how to teach squid to do it in the right way?

Client A and B are requesting different objects one is a CSS one an XML
file.

There is no sign in access.log of those client A requests.

Amos

-- 
Please be using
   Current Stable Squid 2.7.STABLE8 or 3.0.STABLE25
   Current Beta Squid 3.1.0.18
Received on Sat Mar 20 2010 - 01:29:23 MDT

This archive was generated by hypermail 2.2.0 : Sat Mar 20 2010 - 12:00:05 MDT