Nowadays it is a common pattern to use "?timestamp=UNIX_TIMESTAMP" in combination of "Cache-Control: max-age=INFINITY" response headers to denote scenarios where HTML or JavaScript knows that the resource we are retrieving has not been changed since UNIX_TIMESTAMP, so the browser should not attempt to revalidate the resource anyhow, including If-Modified-Since or If-None-Match requests. Currently WebCore/loader/cache/CachedResourceLoader.cpp says: // Check if the cache headers requires us to revalidate (cache expiration for example). if (existingResource->mustRevalidateDueToCacheHeaders(cachePolicy())) { // See if the resource has usable ETag or Last-modified headers. if (existingResource->canUseCacheValidator()) return Revalidate; // No, must reload. LOG(ResourceLoading, "CachedResourceLoader::determineRevalidationPolicy reloading due to missing cache validators."); return Reload; } This kind of responses has canUseCacheValidator() == FALSE, so it returns Reload. I expect it somehow returns Use, so that MemoryCache is reused as long as the resource is still fresh (i.e. max-age not yet elapsed).
<rdar://problem/8917598>