Hello.
I am using Squid 3.0.STABLE8 on Debian Linux.
# echo "Some useful content.">/var/www/a
# touch -t200807241400 /var/www/a
#
$ http_proxy=localhost:3128 curl \
> -H "Pragma:" \
> -H "Cache-Control: max-age=0" \
> -H "If-Modified-Since: Wed, 23-Jul-08 12:00:00 GMT" \
> http://localhost/a
Some useful content.
$ http_proxy=localhost:3128 curl \
> -H "Pragma:" \
> -H "Cache-Control: max-age=0" \
> -H "If-Modified-Since: Wed, 23-Jul-08 12:00:00 GMT" \
> http://localhost/a
$
The first time, the cache get filled.
The second time, I get a 304 HTTP response.
This answer is not correct.
The document has changed since the date specified.
With the "Cache-Control: max-age=0" header,
Squid is asked to validate its entry.
It contacts the origin server with its own If-Modified-Since header.
The origin server responds 304.
Squid forwards this response to the client.
It should not.
Squid and client If-Modified-Since headers are different.
How about this patch?
--- client_side_reply.cc 2008-07-25 20:00:02.000000000 +0200
+++ client_side_reply.cc 2008-07-25 20:05:17.000000000 +0200
@@ -1,5 +1,5 @@
/*
- * $Id: client_side_reply.cc,v 1.154 2008/02/16 17:42:27 rousskov Exp $
+ * $Id$
*
* DEBUG: section 88 Client-side Reply Routines
* AUTHOR: Robert Collins (Originally Duane Wessels in client_side.c)
@@ -370,7 +370,7 @@
// if client sent IMS
- if (http->request->flags.ims) {
+ if (http->request->flags.ims && http->request->ims >
http->request->lastmod) {
// forward the 304 from origin
debugs(88, 3, "handleIMSReply: origin replied 304,
revalidating existing entry and forwarding 304 to client");
sendClientUpstreamResponse();
Received on Thu Jul 31 2008 - 21:00:24 MDT
This archive was generated by hypermail 2.2.0 : Fri Aug 01 2008 - 12:00:07 MDT