Search squid archive

Re: TCP_REFRESH_UNMODIFIED instead of TCP_IMS_HIT? "Revalidation failed"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2/12/2011 1:12 a.m., David Wojak wrote:
On 11/30/2011 01:48 PM, David Wojak wrote:


Client to Server (via proxy):

GET http://bla.bla.bla:8080/afdc3604/lib/commons-logging-1.1.1.jar HTTP/1.1
Host: tlptest.m2n.at:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20100101 Firefox/8.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Proxy-Connection: keep-alive
Cache-Control: no-cache


Proxy to origin server:

GET /afdc3604/lib/commons-logging-1.1.1.jar HTTP/1.1
If-Modified-Since: Tue, 29 Nov 2011 12:21:04 GMT
Host: bla.bla.bla:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20100101 Firefox/8.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Via: 1.1 proxytest (squid/3.1.16)
Cache-Control: max-age=5999940
Connection: keep-alive


Origin Server to Proxy:

HTTP/1.1 304 Not Modified
Server: Jetty(6.1.16)

There is no Date header here. Which may be a problem as it makes the 304 invalid, but Squid assumes "now" and sends that to the client...

Well, thought of that too when I read the 304 specification... well, I'll try that!



Proxy to client:

HTTP/1.0 200 OK
Date: Wed, 30 Nov 2011 08:27:16 GMT
Content-Type: application/java-archive
Content-Length: 66245
Last-Modified: Tue, 29 Nov 2011 12:21:04 GMT
Server: Jetty(6.1.16)
Warning: 110 squid/3.1.16 "Response is stale", 111 squid/3.1.16 "Revalidation failed"
X-Cache: HIT from proxytest
X-Cache-Lookup: HIT from proxytest:3128
Via: 1.0 proxytest (squid/3.1.16)
Connection: keep-alive


I've been checking up. It appears the Warning bug is not fixed yet. It is wrong and can be ignored.

If you can, fix that Date up though.

Amos
Cool, thanks Amos! I'll try to fix the Date thingi on jetty-side. I'll see if that makes a difference :)

Amos, can you give me an example of how a valid IMS with valid 304 response should look like? We changed the jetty header and tried again, but still - revalidation failed.

Current Test:

Client to proxy:

GET http://bla.bla.bla:8080/3b8c257a/lib/commons-logging-1.1.1.jar HTTP/1.1
Host: bla.bla.bla:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20100101 Firefox/8.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Proxy-Connection: keep-alive
Cache-Control: no-cache



Proxy to origin:

GET /3b8c257a/lib/commons-logging-1.1.1.jar HTTP/1.1
If-Modified-Since: Thu, 01 Dec 2011 10:25:55 GMT
Host: bla.bla.bla:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20100101 Firefox/8.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Via: 1.1 proxytest (squid/3.1.16)
Cache-Control: no-cache
Connection: keep-alive


Response:

HTTP/1.1 304 Not Modified
Date: Thu, 01 Dec 2011 11:05:59 GMT
Server: Jetty(6.1.16)

I've read something about "if you send cache-control with the get request, you have to send back the same header with the 304 response" - but couldn't confirm that reading the RFCs... Any idea? What does squid need as response?


What that is about is that *if* the 304 contains one of the valid extra headers like Cache-Control, the Squid response is supposed to be updated to contain the new information. Those are optional extras which for now you are not using.


Proxy to client:

HTTP/1.0 200 OK
Content-Type: application/java-archive
Content-Length: 66245
Last-Modified: Thu, 01 Dec 2011 10:25:55 GMT
Date: Thu, 01 Dec 2011 11:06:04 GMT
Server: Jetty(6.1.16)
Warning: 110 squid/3.1.16 "Response is stale", 111 squid/3.1.16 "Revalidation failed"
X-Cache: HIT from proxytest
X-Cache-Lookup: HIT from proxytest:3128
Via: 1.0 proxytest (squid/3.1.16)
Connection: keep-alive


and again in the log:

1322737561.457 9 192.168.100.215 TCP_REFRESH_UNMODIFIED/200 66658 GET http://bla.bla.bla:8080/3b8c257a/lib/commons-logging-1.1.1.jar - DIRECT/192.168.100.170 application/java-archive


That is a success. The client is requesting a whole new copy, so Squid is required to send a 200 with new copy. But is optimizing the backend check to use 304.

The warning is a minor bug, Squid is adding it based on the before-validation information about the request.

I was expecting Squid to update the Last-Modified date to the client to say "Thu, 01 Dec 2011 11:05:59 GMT" from the 304, but will have to double-check the code and RFCs about that.

Amos


[Index of Archives]     [Linux Audio Users]     [Samba]     [Big List of Linux Books]     [Linux USB]     [Yosemite News]

  Powered by Linux