Re: Not seeing a successful purge

2010-02-26 Thread Tollef Fog Heen
]] John Norman 

| While my backend does say: "Vary: User-Agent" I do also have this in vcl_recv:
| 
|   unset req.http.user-agent;

Ok, I didn't notice.

| Isn't that enough (i.e., if I unset req.http.user-agent in my VCL, can
| I leave Vary: User-Agent on the backend)? I ask because it may be
| problematic to fix the backend in this case.

Yes, that should be enough.

-- 
Tollef Fog Heen 
Redpill Linpro -- Changing the game!
t: +47 21 54 41 73
___
varnish-misc mailing list
varnish-misc@projects.linpro.no
http://projects.linpro.no/mailman/listinfo/varnish-misc


Re: Not seeing a successful purge

2010-02-16 Thread John Norman
Thanks Ken, Laurence, and Tollef.

I'm going to add the normalization for gzip/deflate in vcl_recv

But for user-agent:

While my backend does say: "Vary: User-Agent" I do also have this in vcl_recv:

  unset req.http.user-agent;

Isn't that enough (i.e., if I unset req.http.user-agent in my VCL, can
I leave Vary: User-Agent on the backend)? I ask because it may be
problematic to fix the backend in this case.

We have no content that differs depending on the user agent.

On Mon, Feb 15, 2010 at 3:29 AM, Tollef Fog Heen
 wrote:
>
> Yes, this means that if you know your backend only cares about
> gzip/non-gzip, you should normalise the header in vcl_recv.  Varnish
> can't know this, as it requires knowledge of your backend and
> application.
>
> However, even if you changed that, you still have a Vary on
> user-agent.
___
varnish-misc mailing list
varnish-misc@projects.linpro.no
http://projects.linpro.no/mailman/listinfo/varnish-misc


Re: Not seeing a successful purge

2010-02-15 Thread Tollef Fog Heen
]] John Norman 

| I think it's the backend's (Apache/Passenger) header:
| 
| Vary: Accept-Encoding,User-Agent
| 
| Which seems to prevent (???) this from working in my vcl_hash:
| 
|   if (req.http.Accept-Encoding ~ "gzip") {
| set req.hash += "gzip";
|   } // etc

No, that works fine, but is useless.  Varnish does Vary handling
automatically.

| The Varnish doc says: "But by default, Varnish will perform no
| transforms on the headers singled out by Vary: for comparison"
| (http://varnish-cache.org/wiki/ArchitectureVary).

Yes, this means that if you know your backend only cares about
gzip/non-gzip, you should normalise the header in vcl_recv.  Varnish
can't know this, as it requires knowledge of your backend and
application.

However, even if you changed that, you still have a Vary on
user-agent. This is generally a really bad idea, and you should try to
see if you can vary on something else.  If you don't, you are going to
see poor hit rates. (Assuming that you're not just caching for a
corporate intranet where everybody has _exactly_ the same versions of
browser, etc.)

| So . . . I'm not sure what I should do. If the backend says "Vary" for
| Accept-Encoding, does that mean that I should or should not be able to
| access that header for the purposes of setting the hash?

Normalise Accept-Encoding, stop adding it to the hash.

| What I am observing is:
| 
| browser makes request with Accept-Encoding: gzip,deflate
| 
| When I try to purge, the request with the purge says: Accept-Encoding:
| gzip,identity
| 
| Even though "gzip" is in the request for both the browser
| Accept-Encoding, and for the purge, they seem to be getting hashed
| differently.

No, they hash to the same object but as the Vary-ed string differs the
Vary handling makes it out to be different objects.

-- 
Tollef Fog Heen 
Redpill Linpro -- Changing the game!
t: +47 21 54 41 73
___
varnish-misc mailing list
varnish-misc@projects.linpro.no
http://projects.linpro.no/mailman/listinfo/varnish-misc


Re: Not seeing a successful purge

2010-02-13 Thread Laurence Rowe
Given your backend is issuing a Vary header, I would just remove your
vcl_hash customisation and instead add a little header normalisation
to vcl_recv. We use the snippet from
http://varnish-cache.org/wiki/FAQ/Compression with success. You'll
still have to issue two PURGE requests, one with the gzip in the
Accept Encoding and one without.

Laurence


2010/2/12 John Norman :
> I think it's the backend's (Apache/Passenger) header:
>
>    Vary: Accept-Encoding,User-Agent
>
> Which seems to prevent (???) this from working in my vcl_hash:
>
>  if (req.http.Accept-Encoding ~ "gzip") {
>    set req.hash += "gzip";
>  } // etc
>
> The Varnish doc says: "But by default, Varnish will perform no
> transforms on the headers singled out by Vary: for comparison"
> (http://varnish-cache.org/wiki/ArchitectureVary).
>
> So . . . I'm not sure what I should do. If the backend says "Vary" for
> Accept-Encoding, does that mean that I should or should not be able to
> access that header for the purposes of setting the hash?
>
> What I am observing is:
>
> browser makes request with Accept-Encoding: gzip,deflate
>
> When I try to purge, the request with the purge says: Accept-Encoding:
> gzip,identity
>
> Even though "gzip" is in the request for both the browser
> Accept-Encoding, and for the purge, they seem to be getting hashed
> differently.
>
> If when I do a purge, I force Accept-Encoding: gzip,deflate, then it
> matches what the browser did exactly, and I am able to purge
> successfully.
>
> On Fri, Feb 12, 2010 at 11:54 AM, John Norman  wrote:
>> Here's a bit more on my "purge" problem -- a comparison of a purge
>> that works on my development machine, vs. one that doesn't work on my
>> staging system.
>>
>> On both, the browser request goes to haproxy, then to varnish. The VCL
>> is identical, as quoted in a prior e-mail. The backends are different:
>> on my local, it's the Ruby webrick server; on staging, it's
>> Apache+Passenger.
>>
>> Again, I'm not purging through varnishadm: This is using the
>> pseudo-http-method PURGE.
>>
>> One thing I can say about the staging environment if that if I do a
>> non-browser request using mechanize from the staging system itself,
>> then the later purge DOES work. In that case, the two differences are:
>> The user-agent is the same for both the get and the purge; and
>> requesting IP would be the same for both the get and the purge.
>>
>> Here are the log details.
>>
>> DEVELOPMENT -- first the browser request, showing the hit; then the
>> purge, showing the hit. Awesome!
>>
>> 11 ReqStart     c 127.0.0.1 50808 1691945259
>> 11 RxRequest    c GET
>> 11 RxURL        c /products/sillyputty
>> 11 RxProtocol   c HTTP/1.1
>> 11 RxHeader     c Host: localhost
>> 11 RxHeader     c User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS
>> X 10.5; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 GTB7.0
>> 11 RxHeader     c Accept:
>> text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
>> 11 RxHeader     c Accept-Language: en-us,en;q=0.5
>> 11 RxHeader     c Accept-Encoding: gzip,deflate
>> 11 RxHeader     c Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
>> 11 RxHeader     c Keep-Alive: 300
>> 11 RxHeader     c Connection: close
>> 11 RxHeader     c Referer: http://localhost/
>> 11 RxHeader     c Cookie:
>> remember_token=f27172bfab54dc47d20b6d8c853afb8677fa2d11
>> 11 RxHeader     c X-Forwarded-For: 127.0.0.1
>> 11 VCL_call     c recv
>> 11 VCL_return   c lookup
>> 11 VCL_call     c hash
>> 11 VCL_return   c hash
>> 11 Hit          c 1691945214
>> 11 VCL_call     c hit
>> 11 VCL_return   c deliver
>> 11 Length       c 201518
>> 11 VCL_call     c deliver
>> 11 VCL_return   c deliver
>> 11 TxProtocol   c HTTP/1.1
>> 11 TxStatus     c 200
>> 11 TxResponse   c OK
>> 11 TxHeader     c Cache-Control: max-age=8280, public
>> 11 TxHeader     c X-Runtime: 818
>> 11 TxHeader     c Content-Type: text/html; charset=utf-8
>> 11 TxHeader     c Etag: "f29fbc0160d276fb97a298bf5bce8ff3"
>> 11 TxHeader     c Server: WEBrick/1.3.1 (Ruby/1.9.1/2009-07-16)
>> 11 TxHeader     c Content-Length: 201518
>> 11 TxHeader     c Date: Fri, 12 Feb 2010 16:19:33 GMT
>> 11 TxHeader     c X-Varnish: 1691945259 1691945214
>> 11 TxHeader     c Age: 14
>> 11 TxHeader     c Via: 1.1 varnish
>> 11 TxHeader     c Connection: close
>> 11 ReqEnd       c 1691945259 1265991573.541040897 1265991573.547173977
>> 0.77009 0.55075 0.006078005
>>
>> 11 ReqStart     c ::1 51006 1691945309
>> 11 RxRequest    c PURGE
>> 11 RxURL        c /products/sillyputty
>> 11 RxProtocol   c HTTP/1.1
>> 11 RxHeader     c Accept: */*
>> 11 RxHeader     c User-Agent: WWW-Mechanize/1.0.0
>> (http://rubyforge.org/projects/mechanize/)
>> 11 RxHeader     c Connection: keep-alive
>> 11 RxHeader     c Keep-Alive: 300
>> 11 RxHeader     c Accept-Encoding: gzip,identity
>> 11 RxHeader     c Accept-Language: en-us,en;q=0.5
>> 11 RxHeader     c Host: localhost:8000
>> 11 RxHeader     c Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
>> 11 VCL_call     c 

Re: Not seeing a successful purge

2010-02-12 Thread Ken Brownfield
For any cache, not just Varnish, the Accept-Encoding header used for the purge 
(or a regular cache hit) must match the request header /exactly/.  If you use 
anything other than exactly "Accept-Encoding: gzip,deflate" your purge will 
miss.  So this is the expected behavior, AFAIK.

Any other header specified in Vary must also match exactly for a hit (and 
optional purge) to occur.

You could do some hashing hacks to augment the standard functionality, but it 
might become a bit of a mess.  I haven't needed to find out, though.
-- 
Ken

On Feb 12, 2010, at 10:44 AM, John Norman wrote:

> I think it's the backend's (Apache/Passenger) header:
> 
>Vary: Accept-Encoding,User-Agent
> 
> Which seems to prevent (???) this from working in my vcl_hash:
> 
>  if (req.http.Accept-Encoding ~ "gzip") {
>set req.hash += "gzip";
>  } // etc
> 
> The Varnish doc says: "But by default, Varnish will perform no
> transforms on the headers singled out by Vary: for comparison"
> (http://varnish-cache.org/wiki/ArchitectureVary).
> 
> So . . . I'm not sure what I should do. If the backend says "Vary" for
> Accept-Encoding, does that mean that I should or should not be able to
> access that header for the purposes of setting the hash?
> 
> What I am observing is:
> 
> browser makes request with Accept-Encoding: gzip,deflate
> 
> When I try to purge, the request with the purge says: Accept-Encoding:
> gzip,identity
> 
> Even though "gzip" is in the request for both the browser
> Accept-Encoding, and for the purge, they seem to be getting hashed
> differently.
> 
> If when I do a purge, I force Accept-Encoding: gzip,deflate, then it
> matches what the browser did exactly, and I am able to purge
> successfully.
> 
> On Fri, Feb 12, 2010 at 11:54 AM, John Norman  wrote:
>> Here's a bit more on my "purge" problem -- a comparison of a purge
>> that works on my development machine, vs. one that doesn't work on my
>> staging system.
>> 
>> On both, the browser request goes to haproxy, then to varnish. The VCL
>> is identical, as quoted in a prior e-mail. The backends are different:
>> on my local, it's the Ruby webrick server; on staging, it's
>> Apache+Passenger.
>> 
>> Again, I'm not purging through varnishadm: This is using the
>> pseudo-http-method PURGE.
>> 
>> One thing I can say about the staging environment if that if I do a
>> non-browser request using mechanize from the staging system itself,
>> then the later purge DOES work. In that case, the two differences are:
>> The user-agent is the same for both the get and the purge; and
>> requesting IP would be the same for both the get and the purge.
>> 
>> Here are the log details.
>> 
>> DEVELOPMENT -- first the browser request, showing the hit; then the
>> purge, showing the hit. Awesome!
>> 
>> 11 ReqStart c 127.0.0.1 50808 1691945259
>> 11 RxRequestc GET
>> 11 RxURLc /products/sillyputty
>> 11 RxProtocol   c HTTP/1.1
>> 11 RxHeader c Host: localhost
>> 11 RxHeader c User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS
>> X 10.5; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 GTB7.0
>> 11 RxHeader c Accept:
>> text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
>> 11 RxHeader c Accept-Language: en-us,en;q=0.5
>> 11 RxHeader c Accept-Encoding: gzip,deflate
>> 11 RxHeader c Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
>> 11 RxHeader c Keep-Alive: 300
>> 11 RxHeader c Connection: close
>> 11 RxHeader c Referer: http://localhost/
>> 11 RxHeader c Cookie:
>> remember_token=f27172bfab54dc47d20b6d8c853afb8677fa2d11
>> 11 RxHeader c X-Forwarded-For: 127.0.0.1
>> 11 VCL_call c recv
>> 11 VCL_return   c lookup
>> 11 VCL_call c hash
>> 11 VCL_return   c hash
>> 11 Hit  c 1691945214
>> 11 VCL_call c hit
>> 11 VCL_return   c deliver
>> 11 Length   c 201518
>> 11 VCL_call c deliver
>> 11 VCL_return   c deliver
>> 11 TxProtocol   c HTTP/1.1
>> 11 TxStatus c 200
>> 11 TxResponse   c OK
>> 11 TxHeader c Cache-Control: max-age=8280, public
>> 11 TxHeader c X-Runtime: 818
>> 11 TxHeader c Content-Type: text/html; charset=utf-8
>> 11 TxHeader c Etag: "f29fbc0160d276fb97a298bf5bce8ff3"
>> 11 TxHeader c Server: WEBrick/1.3.1 (Ruby/1.9.1/2009-07-16)
>> 11 TxHeader c Content-Length: 201518
>> 11 TxHeader c Date: Fri, 12 Feb 2010 16:19:33 GMT
>> 11 TxHeader c X-Varnish: 1691945259 1691945214
>> 11 TxHeader c Age: 14
>> 11 TxHeader c Via: 1.1 varnish
>> 11 TxHeader c Connection: close
>> 11 ReqEnd   c 1691945259 1265991573.541040897 1265991573.547173977
>> 0.77009 0.55075 0.006078005
>> 
>> 11 ReqStart c ::1 51006 1691945309
>> 11 RxRequestc PURGE
>> 11 RxURLc /products/sillyputty
>> 11 RxProtocol   c HTTP/1.1
>> 11 RxHeader c Accept: */*
>> 11 RxHeader c User-Agent: WWW-Mechanize/1.0.0
>> (http://rubyforge.org/projects/mechanize/)
>> 11 RxHeader c Connection: keep-alive
>> 11 RxHeader c Keep-Alive: 300
>

Re: Not seeing a successful purge

2010-02-12 Thread John Norman
I think it's the backend's (Apache/Passenger) header:

Vary: Accept-Encoding,User-Agent

Which seems to prevent (???) this from working in my vcl_hash:

  if (req.http.Accept-Encoding ~ "gzip") {
set req.hash += "gzip";
  } // etc

The Varnish doc says: "But by default, Varnish will perform no
transforms on the headers singled out by Vary: for comparison"
(http://varnish-cache.org/wiki/ArchitectureVary).

So . . . I'm not sure what I should do. If the backend says "Vary" for
Accept-Encoding, does that mean that I should or should not be able to
access that header for the purposes of setting the hash?

What I am observing is:

browser makes request with Accept-Encoding: gzip,deflate

When I try to purge, the request with the purge says: Accept-Encoding:
gzip,identity

Even though "gzip" is in the request for both the browser
Accept-Encoding, and for the purge, they seem to be getting hashed
differently.

If when I do a purge, I force Accept-Encoding: gzip,deflate, then it
matches what the browser did exactly, and I am able to purge
successfully.

On Fri, Feb 12, 2010 at 11:54 AM, John Norman  wrote:
> Here's a bit more on my "purge" problem -- a comparison of a purge
> that works on my development machine, vs. one that doesn't work on my
> staging system.
>
> On both, the browser request goes to haproxy, then to varnish. The VCL
> is identical, as quoted in a prior e-mail. The backends are different:
> on my local, it's the Ruby webrick server; on staging, it's
> Apache+Passenger.
>
> Again, I'm not purging through varnishadm: This is using the
> pseudo-http-method PURGE.
>
> One thing I can say about the staging environment if that if I do a
> non-browser request using mechanize from the staging system itself,
> then the later purge DOES work. In that case, the two differences are:
> The user-agent is the same for both the get and the purge; and
> requesting IP would be the same for both the get and the purge.
>
> Here are the log details.
>
> DEVELOPMENT -- first the browser request, showing the hit; then the
> purge, showing the hit. Awesome!
>
> 11 ReqStart     c 127.0.0.1 50808 1691945259
> 11 RxRequest    c GET
> 11 RxURL        c /products/sillyputty
> 11 RxProtocol   c HTTP/1.1
> 11 RxHeader     c Host: localhost
> 11 RxHeader     c User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS
> X 10.5; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 GTB7.0
> 11 RxHeader     c Accept:
> text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
> 11 RxHeader     c Accept-Language: en-us,en;q=0.5
> 11 RxHeader     c Accept-Encoding: gzip,deflate
> 11 RxHeader     c Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
> 11 RxHeader     c Keep-Alive: 300
> 11 RxHeader     c Connection: close
> 11 RxHeader     c Referer: http://localhost/
> 11 RxHeader     c Cookie:
> remember_token=f27172bfab54dc47d20b6d8c853afb8677fa2d11
> 11 RxHeader     c X-Forwarded-For: 127.0.0.1
> 11 VCL_call     c recv
> 11 VCL_return   c lookup
> 11 VCL_call     c hash
> 11 VCL_return   c hash
> 11 Hit          c 1691945214
> 11 VCL_call     c hit
> 11 VCL_return   c deliver
> 11 Length       c 201518
> 11 VCL_call     c deliver
> 11 VCL_return   c deliver
> 11 TxProtocol   c HTTP/1.1
> 11 TxStatus     c 200
> 11 TxResponse   c OK
> 11 TxHeader     c Cache-Control: max-age=8280, public
> 11 TxHeader     c X-Runtime: 818
> 11 TxHeader     c Content-Type: text/html; charset=utf-8
> 11 TxHeader     c Etag: "f29fbc0160d276fb97a298bf5bce8ff3"
> 11 TxHeader     c Server: WEBrick/1.3.1 (Ruby/1.9.1/2009-07-16)
> 11 TxHeader     c Content-Length: 201518
> 11 TxHeader     c Date: Fri, 12 Feb 2010 16:19:33 GMT
> 11 TxHeader     c X-Varnish: 1691945259 1691945214
> 11 TxHeader     c Age: 14
> 11 TxHeader     c Via: 1.1 varnish
> 11 TxHeader     c Connection: close
> 11 ReqEnd       c 1691945259 1265991573.541040897 1265991573.547173977
> 0.77009 0.55075 0.006078005
>
> 11 ReqStart     c ::1 51006 1691945309
> 11 RxRequest    c PURGE
> 11 RxURL        c /products/sillyputty
> 11 RxProtocol   c HTTP/1.1
> 11 RxHeader     c Accept: */*
> 11 RxHeader     c User-Agent: WWW-Mechanize/1.0.0
> (http://rubyforge.org/projects/mechanize/)
> 11 RxHeader     c Connection: keep-alive
> 11 RxHeader     c Keep-Alive: 300
> 11 RxHeader     c Accept-Encoding: gzip,identity
> 11 RxHeader     c Accept-Language: en-us,en;q=0.5
> 11 RxHeader     c Host: localhost:8000
> 11 RxHeader     c Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
> 11 VCL_call     c recv
> 11 VCL_return   c lookup
> 11 VCL_call     c hash
> 11 VCL_return   c hash
> 11 Hit          c 1691945214
> 11 VCL_call     c hit
> 11 TTL          c 1691945214 VCL 0 1265991617
>  0 Debug        - "VCL_error(200, Purged.)"
> 11 VCL_return   c error
> 11 VCL_call     c error
> 11 VCL_return   c deliver
> 11 Length       c 322
> 11 VCL_call     c deliver
> 11 VCL_return   c deliver
> 11 TxProtocol   c HTTP/1.1
> 11 TxStatus     c 200
> 11 TxResponse   c Purged.
> 11 TxHeader     c Server: Varnish
> 11

Re: Not seeing a successful purge

2010-02-12 Thread John Norman
Here's a bit more on my "purge" problem -- a comparison of a purge
that works on my development machine, vs. one that doesn't work on my
staging system.

On both, the browser request goes to haproxy, then to varnish. The VCL
is identical, as quoted in a prior e-mail. The backends are different:
on my local, it's the Ruby webrick server; on staging, it's
Apache+Passenger.

Again, I'm not purging through varnishadm: This is using the
pseudo-http-method PURGE.

One thing I can say about the staging environment if that if I do a
non-browser request using mechanize from the staging system itself,
then the later purge DOES work. In that case, the two differences are:
The user-agent is the same for both the get and the purge; and
requesting IP would be the same for both the get and the purge.

Here are the log details.

DEVELOPMENT -- first the browser request, showing the hit; then the
purge, showing the hit. Awesome!

11 ReqStart c 127.0.0.1 50808 1691945259
11 RxRequestc GET
11 RxURLc /products/sillyputty
11 RxProtocol   c HTTP/1.1
11 RxHeader c Host: localhost
11 RxHeader c User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS
X 10.5; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 GTB7.0
11 RxHeader c Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
11 RxHeader c Accept-Language: en-us,en;q=0.5
11 RxHeader c Accept-Encoding: gzip,deflate
11 RxHeader c Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
11 RxHeader c Keep-Alive: 300
11 RxHeader c Connection: close
11 RxHeader c Referer: http://localhost/
11 RxHeader c Cookie:
remember_token=f27172bfab54dc47d20b6d8c853afb8677fa2d11
11 RxHeader c X-Forwarded-For: 127.0.0.1
11 VCL_call c recv
11 VCL_return   c lookup
11 VCL_call c hash
11 VCL_return   c hash
11 Hit  c 1691945214
11 VCL_call c hit
11 VCL_return   c deliver
11 Length   c 201518
11 VCL_call c deliver
11 VCL_return   c deliver
11 TxProtocol   c HTTP/1.1
11 TxStatus c 200
11 TxResponse   c OK
11 TxHeader c Cache-Control: max-age=8280, public
11 TxHeader c X-Runtime: 818
11 TxHeader c Content-Type: text/html; charset=utf-8
11 TxHeader c Etag: "f29fbc0160d276fb97a298bf5bce8ff3"
11 TxHeader c Server: WEBrick/1.3.1 (Ruby/1.9.1/2009-07-16)
11 TxHeader c Content-Length: 201518
11 TxHeader c Date: Fri, 12 Feb 2010 16:19:33 GMT
11 TxHeader c X-Varnish: 1691945259 1691945214
11 TxHeader c Age: 14
11 TxHeader c Via: 1.1 varnish
11 TxHeader c Connection: close
11 ReqEnd   c 1691945259 1265991573.541040897 1265991573.547173977
0.77009 0.55075 0.006078005

11 ReqStart c ::1 51006 1691945309
11 RxRequestc PURGE
11 RxURLc /products/sillyputty
11 RxProtocol   c HTTP/1.1
11 RxHeader c Accept: */*
11 RxHeader c User-Agent: WWW-Mechanize/1.0.0
(http://rubyforge.org/projects/mechanize/)
11 RxHeader c Connection: keep-alive
11 RxHeader c Keep-Alive: 300
11 RxHeader c Accept-Encoding: gzip,identity
11 RxHeader c Accept-Language: en-us,en;q=0.5
11 RxHeader c Host: localhost:8000
11 RxHeader c Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
11 VCL_call c recv
11 VCL_return   c lookup
11 VCL_call c hash
11 VCL_return   c hash
11 Hit  c 1691945214
11 VCL_call c hit
11 TTL  c 1691945214 VCL 0 1265991617
 0 Debug- "VCL_error(200, Purged.)"
11 VCL_return   c error
11 VCL_call c error
11 VCL_return   c deliver
11 Length   c 322
11 VCL_call c deliver
11 VCL_return   c deliver
11 TxProtocol   c HTTP/1.1
11 TxStatus c 200
11 TxResponse   c Purged.
11 TxHeader c Server: Varnish
11 TxHeader c Retry-After: 0
11 TxHeader c Content-Type: text/html; charset=utf-8
11 TxHeader c Content-Length: 322
11 TxHeader c Date: Fri, 12 Feb 2010 16:20:16 GMT
11 TxHeader c X-Varnish: 1691945309
11 TxHeader c Age: 0
11 TxHeader c Via: 1.1 varnish
11 TxHeader c Connection: close
11 ReqEnd   c 1691945309 1265991616.884471893 1265991616.884622097
0.000173807 0.99182 0.51022

---

Now my problematic STAGING system -- first the GET with the hit, then
the purge that fails to hit.

4 ReqStart c 10.253.191.95 45944 904319331
4 RxRequestc GET
4 RxURLc /products/sillyputty
4 RxProtocol   c HTTP/1.1
4 RxHeader c Host: staging1.example.com
4 RxHeader c User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X
10.5; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 GTB7.0
4 RxHeader c Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
4 RxHeader c Accept-Language: en-us,en;q=0.5
4 RxHeader c Accept-Encoding: gzip,deflate
4 RxHeader c Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
4 RxHeader c Keep-Alive: 300
4 RxHeader c Connection: keep-alive
4 RxHeader c Referer: http://staging1.example.com/
4 RxHeader c Cookie: cehq-id=10.252.66.194.1263417178788050;
__

Re: Not seeing a successful purge

2010-02-12 Thread John Norman
Thanks, Laurence. But . . .

Am I misreading the varnishlog I quoted? The Accept-Encoding headers
seem both to contain gzip:

Here's the Accept-Encoding from the browser:

4 RxHeader c Accept-Encoding: gzip,deflate

Here it is from the PURGE:

4 RxHeader c Accept-Encoding: gzip,identity

(Both quoted from my original message.)

They both contain gzip, so the hash should be the URL + gzip:

sub vcl_hash {
  set req.hash += req.url;

  if (req.http.Accept-Encoding ~ "gzip") {
set req.hash += "gzip";
  } else if (req.http.Accept-Encoding ~ "deflate") {
set req.hash += "deflate";
  }
  return (hash);
}

So, I'm still not seeing why the purge isn't hitting:

>From the browser's GET:

4 VCL_return   c hash
4 Hit  c 904319089
4 VCL_call c hit
4 VCL_return   c deliver

>From the PURGE request:

4 VCL_call c hash
4 VCL_return   c hash
4 VCL_call c miss
0 Debug- "VCL_error(404, Not in cache.)"

On Fri, Feb 12, 2010 at 5:49 AM, Laurence Rowe  wrote:
> Hi,
>
> Your PURGE request is getting a different hash than your browser
> requests because there is no Accept-Encoding header on the PURGE. (You
> see the same problem when using Vary on the response). See
> http://varnish-cache.org/wiki/Purging. You can either use <<
> purge("req.url ~ " req.url); >> in vcl_recv, or send multiple PURGE
> requests with each of the relavant Accept-Encoding values.
>
> Laurence
>
> On 11 February 2010 23:25, John Norman  wrote:
>> Hi, folks.
>>
>> I'm trying to purge with the pseudo HTTP "PURGE" method Varnish supports.
>>
>> I do seem to have a cached page, but the PURGE response suggests that
>> it's missing.
>>
>> So . . . any idea why the PURGE isn't working?
>>
>> In my VCL, my vcl_hash looks like this (I intend it to only hash on
>> the request URL and compression):
>>
>> sub vcl_hash {
>>  set req.hash += req.url;
>>
>>  if (req.http.Accept-Encoding ~ "gzip") {
>>    set req.hash += "gzip";
>>  } else if (req.http.Accept-Encoding ~ "deflate") {
>>    set req.hash += "deflate";
>>  }
>>  return (hash);
>> }
>>
>> And the checks for PURGE look like this (full VCL way below):
>>
>> sub vcl_hit {
>>  if (req.request == "PURGE") {
>>    set obj.ttl = 0s;
>>    error 200 "Purged.";
>>  }
>>  if (!obj.cacheable) {
>>    pass;
>>  }
>>
>>  deliver;
>> }
>> sub vcl_miss {
>>  if (req.request == "PURGE") {
>>    error 404 "Not in cache.";
>>  }
>> }
>>
>> And in vcl_recv:
>>
>>  if (req.request == "PURGE") {
>>    lookup;
>>  }
>
___
varnish-misc mailing list
varnish-misc@projects.linpro.no
http://projects.linpro.no/mailman/listinfo/varnish-misc


Re: Not seeing a successful purge

2010-02-12 Thread Laurence Rowe
Hi,

Your PURGE request is getting a different hash than your browser
requests because there is no Accept-Encoding header on the PURGE. (You
see the same problem when using Vary on the response). See
http://varnish-cache.org/wiki/Purging. You can either use <<
purge("req.url ~ " req.url); >> in vcl_recv, or send multiple PURGE
requests with each of the relavant Accept-Encoding values.

Laurence

On 11 February 2010 23:25, John Norman  wrote:
> Hi, folks.
>
> I'm trying to purge with the pseudo HTTP "PURGE" method Varnish supports.
>
> I do seem to have a cached page, but the PURGE response suggests that
> it's missing.
>
> So . . . any idea why the PURGE isn't working?
>
> In my VCL, my vcl_hash looks like this (I intend it to only hash on
> the request URL and compression):
>
> sub vcl_hash {
>  set req.hash += req.url;
>
>  if (req.http.Accept-Encoding ~ "gzip") {
>    set req.hash += "gzip";
>  } else if (req.http.Accept-Encoding ~ "deflate") {
>    set req.hash += "deflate";
>  }
>  return (hash);
> }
>
> And the checks for PURGE look like this (full VCL way below):
>
> sub vcl_hit {
>  if (req.request == "PURGE") {
>    set obj.ttl = 0s;
>    error 200 "Purged.";
>  }
>  if (!obj.cacheable) {
>    pass;
>  }
>
>  deliver;
> }
> sub vcl_miss {
>  if (req.request == "PURGE") {
>    error 404 "Not in cache.";
>  }
> }
>
> And in vcl_recv:
>
>  if (req.request == "PURGE") {
>    lookup;
>  }
___
varnish-misc mailing list
varnish-misc@projects.linpro.no
http://projects.linpro.no/mailman/listinfo/varnish-misc