Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(517)

Unified Diff: net/http/http_response_headers.cc

Issue 2763393002: Remove stale-while-revalidate from net (Closed)
Patch Set: fixes Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/http/http_response_headers.h ('k') | net/http/http_response_headers_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/http/http_response_headers.cc
diff --git a/net/http/http_response_headers.cc b/net/http/http_response_headers.cc
index d0b2fc18ced38245b5b8397e33a3fe22f4cee804..08eceab71280be2d300b436984f28ee90169b8c6 100644
--- a/net/http/http_response_headers.cc
+++ b/net/http/http_response_headers.cc
@@ -917,28 +917,14 @@ bool HttpResponseHeaders::IsRedirectResponseCode(int response_code) {
// Of course, there are other factors that can force a response to always be
// validated or re-fetched.
//
-// From RFC 5861 section 3, a stale response may be used while revalidation is
-// performed in the background if
-//
-// freshness_lifetime + stale_while_revalidate > current_age
-//
-ValidationType HttpResponseHeaders::RequiresValidation(
- const Time& request_time,
- const Time& response_time,
- const Time& current_time) const {
+bool HttpResponseHeaders::RequiresValidation(const Time& request_time,
+ const Time& response_time,
+ const Time& current_time) const {
FreshnessLifetimes lifetimes = GetFreshnessLifetimes(response_time);
- if (lifetimes.freshness.is_zero() && lifetimes.staleness.is_zero())
- return VALIDATION_SYNCHRONOUS;
-
- TimeDelta age = GetCurrentAge(request_time, response_time, current_time);
-
- if (lifetimes.freshness > age)
- return VALIDATION_NONE;
-
- if (lifetimes.freshness + lifetimes.staleness > age)
- return VALIDATION_ASYNCHRONOUS;
-
- return VALIDATION_SYNCHRONOUS;
+ if (lifetimes.freshness.is_zero())
+ return true;
+ return lifetimes.freshness <=
+ GetCurrentAge(request_time, response_time, current_time);
}
// From RFC 2616 section 13.2.4:
@@ -961,9 +947,6 @@ ValidationType HttpResponseHeaders::RequiresValidation(
//
// freshness_lifetime = (date_value - last_modified_value) * 0.10
//
-// If the stale-while-revalidate directive is present, then it is used to set
-// the |staleness| time, unless it overridden by another directive.
-//
HttpResponseHeaders::FreshnessLifetimes
HttpResponseHeaders::GetFreshnessLifetimes(const Time& response_time) const {
FreshnessLifetimes lifetimes;
@@ -978,13 +961,6 @@ HttpResponseHeaders::GetFreshnessLifetimes(const Time& response_time) const {
return lifetimes;
}
- // Cache-Control directive must_revalidate overrides stale-while-revalidate.
- bool must_revalidate = HasHeaderValue("cache-control", "must-revalidate");
-
- if (must_revalidate || !GetStaleWhileRevalidateValue(&lifetimes.staleness)) {
- DCHECK_EQ(TimeDelta(), lifetimes.staleness);
- }
-
// NOTE: "Cache-Control: max-age" overrides Expires, so we only check the
// Expires header after checking for max-age in GetFreshnessLifetimes. This
// is important since "Expires: <date in the past>" means not fresh, but
@@ -1035,7 +1011,8 @@ HttpResponseHeaders::GetFreshnessLifetimes(const Time& response_time) const {
// experimental RFC that adds 308 permanent redirect as well, for which "any
// future references ... SHOULD use one of the returned URIs."
if ((response_code_ == 200 || response_code_ == 203 ||
- response_code_ == 206) && !must_revalidate) {
+ response_code_ == 206) &&
+ !HasHeaderValue("cache-control", "must-revalidate")) {
// TODO(darin): Implement a smarter heuristic.
Time last_modified_value;
if (GetLastModifiedValue(&last_modified_value)) {
@@ -1051,13 +1028,11 @@ HttpResponseHeaders::GetFreshnessLifetimes(const Time& response_time) const {
if (response_code_ == 300 || response_code_ == 301 || response_code_ == 308 ||
response_code_ == 410) {
lifetimes.freshness = TimeDelta::Max();
- lifetimes.staleness = TimeDelta(); // It should never be stale.
return lifetimes;
}
// Our heuristic freshness estimate for this resource is 0 seconds, in
- // accordance with common browser behaviour. However, stale-while-revalidate
- // may still apply.
+ // accordance with common browser behaviour.
DCHECK_EQ(TimeDelta(), lifetimes.freshness);
return lifetimes;
}
@@ -1168,11 +1143,6 @@ bool HttpResponseHeaders::GetExpiresValue(Time* result) const {
return GetTimeValuedHeader("Expires", result);
}
-bool HttpResponseHeaders::GetStaleWhileRevalidateValue(
- TimeDelta* result) const {
- return GetCacheControlDirective("stale-while-revalidate", result);
-}
-
bool HttpResponseHeaders::GetTimeValuedHeader(const std::string& name,
Time* result) const {
std::string value;
« no previous file with comments | « net/http/http_response_headers.h ('k') | net/http/http_response_headers_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698