The header Cache-Control: max-age=0
implies that the content is considered stale (and must be re-fetched) immediately, which is in effect the same thing as
In my recent tests with IE8 and Firefox 3.5, it seems that both are RFC-compliant. However, they differ in their "friendliness" to the origin server. IE8 treats no-cache
responses with the same semantics as max-age=0,must-revalidate
. Firefox 3.5, however, seems to treat no-cache
as equivalent to no-store
, which sucks for performance and bandwidth usage.
Squid Cache, by default, seems to never store anything with a no-cache
header, just like Firefox.
My advice would be to set public,max-age=0
for non-sensitive resources you want to have checked for freshness on every request, but still allow the performance and bandwidth benefits of caching. For per-user items with the same consideration, use private,max-age=0
.
I would avoid the use of no-cache
entirely, as it seems it has been bastardized by some browsers and popular caches to the functional equivalent of no-store
.
Additionally, do not emulate Akamai and Limelight. While they essentially run massive caching arrays as their primary business, and should be experts, they actually have a vested interest in causing more data to be downloaded from their networks. Google might not be a good choice for emulation, either. They seem to use max-age=0
or no-cache
randomly depending on the resource.