david robertson wrote:
Squid 2.x supports this: # TAG: collapsed_forwarding (on|off) # This option enables multiple requests for the same URI to be # processed as one request. Normally disabled to avoid increased # latency on dynamic content, but there can be benefit from enabling # this in accelerator setups where the web servers are the bottleneck # and reliable and returns mostly cacheable information. It's exactly what you're looking for. Basically it causes Squid to request the URL from the origin server one time, and serves the other requests the stale content.
If stampeeding is a worry the stale-if-error and stale-while-revalidate Cache-Control: options would also be useful (sent from the origin web server). These are supported by 2.7.
They prevent a stampeed if the collapsed request itself fails or a group of clients waiting have to be broken out of the collapsed bunch (ie different Vary: requirements).
The way stale-while-revalidate works is designed specifically for stampeeds. So can also be used for a good result even without collapsed forwarding. Though best result is when combined.
Amos -- Please be using Current Stable Squid 2.7.STABLE9 or 3.1.5