static bool canUseResponse(ResourceResponse& response, double responseTimestamp) { if (response.isNull()) return false; // FIXME: Why isn't must-revalidate considered a reason we can't use the response? if (response.cacheControlContainsNoCache() || response.cacheControlContainsNoStore()) return false; if (response.httpStatusCode() == 303) { // Must not be cached. return false; } if (response.httpStatusCode() == 302 || response.httpStatusCode() == 307) { // Default to not cacheable unless explicitly allowed. bool hasMaxAge = std::isfinite(response.cacheControlMaxAge()); bool hasExpires = std::isfinite(response.expires()); // TODO: consider catching Cache-Control "private" and "public" here. if (!hasMaxAge && !hasExpires) return false; } return currentAge(response, responseTimestamp) <= freshnessLifetime(response, responseTimestamp); }
bool CachedResource::isExpired() const { if (m_response.isNull()) return false; return currentAge() > freshnessLifetime(); }