On 18/11/10 00:18, Riccardo Pizzi wrote:
Hi, I am using Squid 2.6.STABLE21 in accelerator mode and trying to cache dynamic content. My origin server appends an ETag header that is a MD5 of the actual page, and when a client sends the if-none-match with matching ETag, a 304 is returned instead of the page unless the page changed in the meantime. I have noticed that Squid sends the ETag only when the client (browser) includes it in the request; otherwise, it is not sent at all. My expected behaviour would be that when a new request for a cached page comes, Squid revalidates with the origin server generating its own if-none-match header, but this is not the case and I get a 200 response from origin server every time, unless, again, the browser itself sends a if-none-match with the actual etag value. Is there a way to have Squid *originating* the if-none-match header on behalf of the clients? Ideally, I would disregard the clients' if-none-match header because it could contain an outdated ETag, so they would ask Squid for the latest version of the page, Squid would check with origin *every time* (using its own if-none-match request) and then serve the page to the browser (with a 200 response code and current ETag from cache). Has anybody a working setup like this? I will gladly accept all solutions, including patches, code modifications or version changes... Thanks in advance, Rick
If-None-Match behaviour has been mostly corrected in 3.2.0.3 (beta). There is just one last patch from bug http://bugs.squid-cache.org/show_bug.cgi?id=3099 for correct RFC compliance as expected by the browsers.
Amos -- Please be using Current Stable Squid 2.7.STABLE9 or 3.1.9 Beta testers wanted for 3.2.0.3