New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 60 users

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 3
Type: Feature


Sign in to add a comment

Support stale-while-revalidate (one of the two HTTP Cache-Control Extensions for stale content)

Project Member Reported by kenjibaheux@chromium.org, Mar 4 2014

Issue description

Status: Untriaged
Tests:
1. Serving with Cache-control: max-age=60, stale-while-revalidate=600
Results:
 Chrome 35: not supported
 Firefox 27.0.1: not supported
 IE 11.0.9431.0: not supported
 Safari 5.1.7: not supported
 Opera 12.16: not supported

2. Serving with Cache-control: max-age=60, stale-if-error=600
Results:
 Chrome 35: not supported
 Firefox 27.0.1: not supported
 IE 11.0.9431.0: not supported
 Safari 5.1.7: not supported
 Opera 12.16: not supported

Generic description of use cases:
1. stale-while-revalidate
 - assets that are expensive to re-acquire and/or for which being blocked on said re-acquisition lead to a dramatic disruption of the user experience (e.g. a web font)

2. stale-if-error
 - for when serving stale assets is enough to guarantee a reasonable user experience while the server is having difficulties (e.g. a checklist, a blog article, a recipe...)


Cc: igrigo...@chromium.org

Comment 4 by dxie@chromium.org, Mar 10 2014

do you want us to assign to someone who works on http cache?  Or are you looking at it?
Cc: kenjibaheux@chromium.org
Owner: dxie@chromium.org
If there is someone interested to make this happen that would be awesome!

I had it assigned to myself to build the case for it and start working out the corner cases. I'm really eager to see this so I will do all I can to shepherd this feature.


Let me assign to you for the actual assignment.

Comment 6 by dxie@chromium.org, Mar 17 2014

Labels: m-36
Owner: rvargas@chromium.org
Status: Assigned
rvargas@, can you see if we should implement this.
This doesn't look to me as being ready to be implemented.

For example, one thing that has been suggested in the past (and discussed in the recent email thread) was to automatically revalidate resources after reusing them if the expiration date is within some threshold. That has the advantage of not requiring any change outside of the browser to be effective.
Owner: kenjibaheux@chromium.org
Thanks dxie and Ricardo, I'll start a PRD and ask for feedback to zero-in on a ready for implementation state.
Labels: -Pri-2 -m-36 Pri-1 M-37
Summary: Support stale-while-revalidate (one of the two HTTP Cache-Control Extensions for stale content) (was: Support HTTP Cache-Control Extensions for Stale Content (stale-while-revalidate and stale-if-error))
Scoping down.
Owner: tyoshino@chromium.org
We had some discussion about Ricardo's point ("automatically revalidate resources after reusing them if the expiration date is within some threshold. That has the advantage of not requiring any change outside of the browser to be effective."). 

There are merits to both approaches. The heuristic based approach definitely needs more work.

There is enough traction behind this header to make it happen. Also, the spec is clear and so far there are only questions that can be resolved in a follow up (e.g. how would this show up in resource timing api if at all).

I talked to tyoshino@ who said he would be willing to start working on this.
Cc: willchan@chromium.org
Just to doublecheck, Ricardo/Gavin/some cache guy is on board with this, right?
Labels: -M-37 MovedFrom-37 M-38
Moving all non essential bugs to the next Milestone.
Cc: tyoshino@chromium.org
Owner: ricea@chromium.org
Status: Started
Adam just started to look into this.
Project Member

Comment 14 by bugdroid1@chromium.org, Jul 30 2014

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f311c233e1c2cb66205eb777d6b40b16ea36e58b

commit f311c233e1c2cb66205eb777d6b40b16ea36e58b
Author: ricea@chromium.org <ricea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Wed Jul 30 11:33:56 2014

Initial implementation of Chrome-Freshness header.

Add a header like

Chrome-Freshness: max-age=30,stale-while-revalidate=60,age=10

when sending a revalidation request to a server which supplied the
Cache-Control stale-while-revalidate directive on the previous response.

Design doc: https://docs.google.com/document/d/1DMCIMAKjyKeYiu69jlI5OsO2pGyAMb81XflYK4hxsNM/edit

BUG=348877
TEST=net_unittests

Review URL: https://codereview.chromium.org/391763002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@286482 0039d316-1c4b-4281-b951-d872f2087c98


Project Member

Comment 15 by bugdroid1@chromium.org, Jul 30 2014

------------------------------------------------------------------
r286482 | ricea@chromium.org | 2014-07-30T11:33:56.130240Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/http/http_cache_unittest.cc?r1=286482&r2=286481&pathrev=286482
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/http/http_cache_transaction.cc?r1=286482&r2=286481&pathrev=286482
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/http/http_response_headers_unittest.cc?r1=286482&r2=286481&pathrev=286482
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/http/http_response_headers.cc?r1=286482&r2=286481&pathrev=286482
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/http/http_response_headers.h?r1=286482&r2=286481&pathrev=286482

Initial implementation of Chrome-Freshness header.

Add a header like

Chrome-Freshness: max-age=30,stale-while-revalidate=60,age=10

when sending a revalidation request to a server which supplied the
Cache-Control stale-while-revalidate directive on the previous response.

Design doc: https://docs.google.com/document/d/1DMCIMAKjyKeYiu69jlI5OsO2pGyAMb81XflYK4hxsNM/edit

BUG=348877
TEST=net_unittests

Review URL: https://codereview.chromium.org/391763002
-----------------------------------------------------------------
Project Member

Comment 16 by bugdroid1@chromium.org, Aug 15 2014

------------------------------------------------------------------
r289978 | ricea@chromium.org | 2014-08-15T19:29:07.453853Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/http/http_cache_unittest.cc?r1=289978&r2=289977&pathrev=289978
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/http/http_cache_transaction.cc?r1=289978&r2=289977&pathrev=289978

Rename Chromium-Resource-Freshness header

The "Resource-Freshness" header was temporarily named
"Chromium-Resource-Freshness" during development.

Since Chrome policy is to avoid using vendor prefixes, we should not
ship the browser to stable with this header name.

Rename the header to "Resource-Freshness".

TEST=net_unittests
BUG=348877

Review URL: https://codereview.chromium.org/469993008
-----------------------------------------------------------------
Project Member

Comment 17 by bugdroid1@chromium.org, Aug 15 2014

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7274704f7d5aa774f8239b225223edfdef27df5d

commit 7274704f7d5aa774f8239b225223edfdef27df5d
Author: ricea@chromium.org <ricea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Fri Aug 15 19:29:07 2014

Rename Chromium-Resource-Freshness header

The "Resource-Freshness" header was temporarily named
"Chromium-Resource-Freshness" during development.

Since Chrome policy is to avoid using vendor prefixes, we should not
ship the browser to stable with this header name.

Rename the header to "Resource-Freshness".

TEST=net_unittests
BUG=348877

Review URL: https://codereview.chromium.org/469993008

Cr-Commit-Position: refs/heads/master@{#289978}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@289978 0039d316-1c4b-4281-b951-d872f2087c98


Project Member

Comment 18 by bugdroid1@chromium.org, Aug 21 2014

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/778be59b18a1275beec722a549f5c4c2ee1882db

commit 778be59b18a1275beec722a549f5c4c2ee1882db
Author: mostynb@opera.com <mostynb@opera.com@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Thu Aug 21 08:51:58 2014

parameterize http response header tests

Followup to https://codereview.chromium.org/391763002 to allow this
to build on more compilers (which can fail when using structs defined
in funtions in arraysize calls- as mentioned in base/macros.h).

By refactoring to use TEST_P we can skip the manual loop entirely.

BUG=348877
TEST=net_unittests --gtest_filter=Http*

Review URL: https://codereview.chromium.org/448373003

Cr-Commit-Position: refs/heads/master@{#291025}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@291025 0039d316-1c4b-4281-b951-d872f2087c98


Project Member

Comment 19 by bugdroid1@chromium.org, Aug 21 2014

------------------------------------------------------------------
r291025 | mostynb@opera.com | 2014-08-21T08:51:58.173602Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/http/http_response_headers_unittest.cc?r1=291025&r2=291024&pathrev=291025

parameterize http response header tests

Followup to https://codereview.chromium.org/391763002 to allow this
to build on more compilers (which can fail when using structs defined
in funtions in arraysize calls- as mentioned in base/macros.h).

By refactoring to use TEST_P we can skip the manual loop entirely.

BUG=348877
TEST=net_unittests --gtest_filter=Http*

Review URL: https://codereview.chromium.org/448373003
-----------------------------------------------------------------
Project Member

Comment 20 by bugdroid1@chromium.org, Oct 8 2014

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476

commit 64c07d7959386d30a0e4aa1371e2bdcd3d436476
Author: ricea <ricea@chromium.org>
Date: Wed Oct 08 03:37:00 2014

stale-while-revalidate experimental implementation.

Simplistic implementation of stale-while-revalidate. See design doc at
https://docs.google.com/document/d/1DMCIMAKjyKeYiu69jlI5OsO2pGyAMb81XflYK4hxsNM/edit?usp=sharing

This implementation has known flaws:
1. Set-Cookie, Strict-Transport-Security and Public-Key-Pins headers
are lost from the responses of asynchronous revalidations.
2. Conditional requests sent from the Blink cache do not have the
stale-while-revalidate logic applied to them.
3. Support for the bandwidth reduction proxy is hacky.

It will be replaced with a better implementation if/when the concept is proven.

BUG=348877
TEST=net_unittests

Review URL: https://codereview.chromium.org/455623003

Cr-Commit-Position: refs/heads/master@{#298649}

[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/build/ios/grit_whitelist.txt
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/chrome/app/generated_resources.grd
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/chrome/browser/about_flags.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/chrome/browser/io_thread.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/chrome/browser/io_thread.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/chrome/browser/net/chrome_network_delegate.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/chrome/browser/predictors/resource_prefetch_predictor.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/chrome/browser/resources/net_internals/source_entry.js
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/chrome/common/chrome_switches.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/chrome/common/chrome_switches.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/net/base/load_flags_list.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/net/base/net_log_event_type_list.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/net/base/net_log_source_type_list.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/net/http/http_cache.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/net/http/http_cache.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/net/http/http_cache_transaction.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/net/http/http_cache_transaction.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/net/http/http_cache_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/net/http/http_network_session.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/net/http/http_network_session.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/net/http/http_response_headers.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/net/http/http_response_headers.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/net/http/http_response_headers_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/net/http/http_transaction_test_util.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/64c07d7959386d30a0e4aa1371e2bdcd3d436476/tools/metrics/histograms/histograms.xml

Project Member

Comment 22 by bugdroid1@chromium.org, Oct 30 2014

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/eb1504475d05411b479912b2c896862221f21d51

commit eb1504475d05411b479912b2c896862221f21d51
Author: ricea <ricea@chromium.org>
Date: Thu Oct 30 10:42:51 2014

Use DCHECK_EQ() when comparing TimeDeltas.

This CL is a part of https://codereview.chromium.org/665023002/ ("Post-commit
fixes for "stale-while-revalidate..."") that has been separated into a separate
CL because it depends on https://codereview.chromium.org/669083002/ ("Add
logging support for base::Time* types.").

BUG=348877

Review URL: https://codereview.chromium.org/670303003

Cr-Commit-Position: refs/heads/master@{#302065}

[modify] https://chromium.googlesource.com/chromium/src.git/+/eb1504475d05411b479912b2c896862221f21d51/net/http/http_response_headers.cc

Labels: -M-38 M-43
Update: 
 - The experimental implementation uncovered a few issues.
 - Adam will have a design doc for a new architecture that solve these issues.
 - M43 seems reasonable.
Labels: -Pri-1 -M-43 MovedFrom-43 M-44 Pri-2
[AUTO] This issue is Pri-1 but has already been moved once, therefore lowering to Pri-2 and moving to next milesone.
Labels: -M-44 MovedFrom-44
[AUTO] This issue has already been moved once and is lower than Priority 1,therefore removing mstone.
Cc: -willchan@chromium.org
Project Member

Comment 27 by bugdroid1@chromium.org, Jun 19 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b38b3f9fbe286d7305d89d5089d18a423d9ab2bc

commit b38b3f9fbe286d7305d89d5089d18a423d9ab2bc
Author: ricea <ricea@chromium.org>
Date: Fri Jun 19 13:24:07 2015

Remove stale-while-revalidate experimental implementation.

This is in preparation for adding the new implementation.

This is a partial revert of commit
64c07d7959386d30a0e4aa1371e2bdcd3d436476. Parts which will still be
needed in the new implementation have been left.

BUG=348877
TEST=net_unittests

Review URL: https://codereview.chromium.org/1041763002

Cr-Commit-Position: refs/heads/master@{#335252}

[modify] http://crrev.com/b38b3f9fbe286d7305d89d5089d18a423d9ab2bc/chrome/browser/io_thread.cc
[modify] http://crrev.com/b38b3f9fbe286d7305d89d5089d18a423d9ab2bc/chrome/browser/io_thread.h
[modify] http://crrev.com/b38b3f9fbe286d7305d89d5089d18a423d9ab2bc/chrome/browser/resources/net_internals/source_entry.js
[modify] http://crrev.com/b38b3f9fbe286d7305d89d5089d18a423d9ab2bc/net/base/load_flags_list.h
[modify] http://crrev.com/b38b3f9fbe286d7305d89d5089d18a423d9ab2bc/net/http/http_cache.cc
[modify] http://crrev.com/b38b3f9fbe286d7305d89d5089d18a423d9ab2bc/net/http/http_cache.h
[modify] http://crrev.com/b38b3f9fbe286d7305d89d5089d18a423d9ab2bc/net/http/http_cache_transaction.cc
[modify] http://crrev.com/b38b3f9fbe286d7305d89d5089d18a423d9ab2bc/net/http/http_cache_transaction.h
[modify] http://crrev.com/b38b3f9fbe286d7305d89d5089d18a423d9ab2bc/net/http/http_cache_unittest.cc
[modify] http://crrev.com/b38b3f9fbe286d7305d89d5089d18a423d9ab2bc/net/http/http_network_session.cc
[modify] http://crrev.com/b38b3f9fbe286d7305d89d5089d18a423d9ab2bc/net/http/http_network_session.h
[modify] http://crrev.com/b38b3f9fbe286d7305d89d5089d18a423d9ab2bc/net/log/net_log_event_type_list.h
[modify] http://crrev.com/b38b3f9fbe286d7305d89d5089d18a423d9ab2bc/net/log/net_log_source_type_list.h
[modify] http://crrev.com/b38b3f9fbe286d7305d89d5089d18a423d9ab2bc/tools/metrics/histograms/histograms.xml

Project Member

Comment 28 by bugdroid1@chromium.org, Aug 14 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6e001fc816a85f6815e286398e870b8e86e09703

commit 6e001fc816a85f6815e286398e870b8e86e09703
Author: ricea <ricea@chromium.org>
Date: Fri Aug 14 18:25:29 2015

ResourceScheduler: remove dependency on ResourceRequestInfo and request_id

For async revalidations to work independently of
ResourceDispatcherHostImpl after creation, it is necessary that they
have no ResourceRequestInfoImpl objects attached to them.

However, we still need ResourceScheduler to be able to schedule these
requests.

This CL makes ScheduledResourceRequest a public interface which is
returned by ResourceScheduler::ScheduleResource(). The code to handle
ResourceHostMsg_DidChangePriority is now inside
ResourceDispatcherHostImpl instead of being delegated to
ResourceMessageDelegates.

A pointer to the ScheduledResourceRequest is attached to the URLRequest
so that ResourceDispatcherHostImpl can retrieve it when a
DidChangePriority message is received.

BUG=348877
TEST=content_unittests

Review URL: https://codereview.chromium.org/1285863003

Cr-Commit-Position: refs/heads/master@{#343442}

[modify] http://crrev.com/6e001fc816a85f6815e286398e870b8e86e09703/content/browser/loader/resource_dispatcher_host_impl.cc
[modify] http://crrev.com/6e001fc816a85f6815e286398e870b8e86e09703/content/browser/loader/resource_dispatcher_host_impl.h
[modify] http://crrev.com/6e001fc816a85f6815e286398e870b8e86e09703/content/browser/loader/resource_dispatcher_host_unittest.cc
[modify] http://crrev.com/6e001fc816a85f6815e286398e870b8e86e09703/content/browser/loader/resource_scheduler.cc
[modify] http://crrev.com/6e001fc816a85f6815e286398e870b8e86e09703/content/browser/loader/resource_scheduler.h
[modify] http://crrev.com/6e001fc816a85f6815e286398e870b8e86e09703/content/browser/loader/resource_scheduler_unittest.cc

Labels: M-47
Project Member

Comment 31 by bugdroid1@chromium.org, Sep 1 2015

The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=201546

------------------------------------------------------------------
r201546 | ricea@chromium.org | 2015-09-01T10:02:15.962283Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebRuntimeFeatures.cpp?r1=201546&r2=201545&pathrev=201546
   M http://src.chromium.org/viewvc/blink/trunk/public/web/WebRuntimeFeatures.h?r1=201546&r2=201545&pathrev=201546
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/RuntimeEnabledFeatures.in?r1=201546&r2=201545&pathrev=201546

Remove StaleWhileRevalidateCacheControl feature.

This feature will not be used in Blink in the immediate future, so
remove it.

There are no callers or users.

BUG=348877
TEST=compiled

Review URL: https://codereview.chromium.org/1325613002
-----------------------------------------------------------------
Project Member

Comment 32 by bugdroid1@chromium.org, Nov 13 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3f054c2a5289d812e69f56ec613cc3f2179c50d0

commit 3f054c2a5289d812e69f56ec613cc3f2179c50d0
Author: ricea <ricea@chromium.org>
Date: Fri Nov 13 06:48:22 2015

Factor out the string lookup code from registry_controlled_domains

The string lookup code used by registry_controlled_domains is generally useful
as it provides for efficient lookup of strings in a set with no runtime
initialisation overhead.

Factor it out into a public LookupStringInFixedSet function and add unit tests.

BUG=348877
TEST=net_unittests

Review URL: https://codereview.chromium.org/1412343008

Cr-Commit-Position: refs/heads/master@{#359506}

[add] http://crrev.com/3f054c2a5289d812e69f56ec613cc3f2179c50d0/net/base/lookup_string_in_fixed_set.cc
[add] http://crrev.com/3f054c2a5289d812e69f56ec613cc3f2179c50d0/net/base/lookup_string_in_fixed_set.h
[add] http://crrev.com/3f054c2a5289d812e69f56ec613cc3f2179c50d0/net/base/lookup_string_in_fixed_set_unittest.cc
[modify] http://crrev.com/3f054c2a5289d812e69f56ec613cc3f2179c50d0/net/base/registry_controlled_domains/BUILD.gn
[modify] http://crrev.com/3f054c2a5289d812e69f56ec613cc3f2179c50d0/net/base/registry_controlled_domains/registry_controlled_domain.cc
[modify] http://crrev.com/3f054c2a5289d812e69f56ec613cc3f2179c50d0/net/net.gyp
[modify] http://crrev.com/3f054c2a5289d812e69f56ec613cc3f2179c50d0/net/net.gypi
[rename] http://crrev.com/3f054c2a5289d812e69f56ec613cc3f2179c50d0/net/tools/dafsa/PRESUBMIT.py
[rename] http://crrev.com/3f054c2a5289d812e69f56ec613cc3f2179c50d0/net/tools/dafsa/make_dafsa.py
[rename] http://crrev.com/3f054c2a5289d812e69f56ec613cc3f2179c50d0/net/tools/dafsa/make_dafsa_unittest.py

Comment 33 by ricea@chromium.org, Nov 17 2015

Labels: -M-47 MovedFrom-47 M49
M48 has branched. The target for running experiments is now M49.

Current experiment plan / timeline. All dates are approximate.

1 Dec 2015: Canary smoke test. Enable for 50% of canary users on Mac/Windows/Linux/CrOS for 2 days to detect new crashes. Cannot use Android because there is no Canary for Android. Criteria for proceeding to next step is no significant increase in crashes vs. the control group.
15 Dec 2015: Functionality test. Enable for 40% of dev users on Android for 7 days. Expect to see improvement in PageLoad.Clients.StaleWhileRevalidateExperiment.Timing2.NavigationToFirstTextPaint. Criteria for proceeding to next step is no significant regression on any PageLoad metric.
Q2 2016: Functionality test. Enable for 5% of stable users on Android for 7 days. Success criteria are statistically significant improvement in PageLoad.Clients.StaleWhileRevalidateExperiment.Timing2.NavigationToFirstTextPaint and no statistically significant regression on any PageLoad metric.

Comment 34 by ricea@chromium.org, Nov 17 2015

There are spec and implementation issues with the version of the code that will be in M49. Assuming that the experiments succeed, it is possible that we could have a launchable implementation for M50, but M51 is more likely.
Project Member

Comment 35 by bugdroid1@chromium.org, Nov 24 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d97c21a2738efb1f2f0caf90bbc6be3c067cae21

commit d97c21a2738efb1f2f0caf90bbc6be3c067cae21
Author: cbentzel <cbentzel@chromium.org>
Date: Tue Nov 24 11:37:24 2015

Async revalidation only applies to GET requests

BUG=348877

Review URL: https://codereview.chromium.org/1406323003

Cr-Commit-Position: refs/heads/master@{#361318}

[modify] http://crrev.com/d97c21a2738efb1f2f0caf90bbc6be3c067cae21/net/http/http_cache_transaction.cc

Labels: -M49 M-49
Project Member

Comment 37 by bugdroid1@chromium.org, Nov 25 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/51d6bcfd10cb847da284a7aa1202f92ea37b74ca

commit 51d6bcfd10cb847da284a7aa1202f92ea37b74ca
Author: ricea <ricea@chromium.org>
Date: Wed Nov 25 03:23:42 2015

Add StaleWhileRevalidateExperiment histograms.

Add histograms
PageLoad.Clients.StaleWhileRevalidateExperiment.Timing2.NavigationToLoadEventFired,
PageLoad.Clients.StaleWhileRevalidateExperiment.Timing2.NavigationToFirstLayout,
and
PageLoad.Clients.StaleWhileRevalidateExperiment.Timing2.NavigationToFirstTextPaint.

These behave the same as the base histograms, but they are only recorded
for a subset of domains which have render-blocking resources served with
the Cache-Control stale-while-revalidate directive.

These histograms permit us to measure the benefit in load time from the
implementation of the directive wihout noise from domains which don't
use it.

This CL was split from the original CL https://codereview.chromium.org/1303973009/
with changes to the filenames and target names in //net.

BUG=348877
TEST=manual

Review URL: https://codereview.chromium.org/1433893002

Cr-Commit-Position: refs/heads/master@{#361549}

[add] http://crrev.com/51d6bcfd10cb847da284a7aa1202f92ea37b74ca/chrome/browser/page_load_metrics/observers/stale_while_revalidate_metrics_observer.cc
[add] http://crrev.com/51d6bcfd10cb847da284a7aa1202f92ea37b74ca/chrome/browser/page_load_metrics/observers/stale_while_revalidate_metrics_observer.h
[modify] http://crrev.com/51d6bcfd10cb847da284a7aa1202f92ea37b74ca/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc
[modify] http://crrev.com/51d6bcfd10cb847da284a7aa1202f92ea37b74ca/chrome/browser/ui/BUILD.gn
[modify] http://crrev.com/51d6bcfd10cb847da284a7aa1202f92ea37b74ca/chrome/chrome_browser.gypi
[modify] http://crrev.com/51d6bcfd10cb847da284a7aa1202f92ea37b74ca/chrome/chrome_browser_ui.gypi
[modify] http://crrev.com/51d6bcfd10cb847da284a7aa1202f92ea37b74ca/net/BUILD.gn
[add] http://crrev.com/51d6bcfd10cb847da284a7aa1202f92ea37b74ca/net/base/stale_while_revalidate_experiment_domains.cc
[add] http://crrev.com/51d6bcfd10cb847da284a7aa1202f92ea37b74ca/net/base/stale_while_revalidate_experiment_domains.gperf
[add] http://crrev.com/51d6bcfd10cb847da284a7aa1202f92ea37b74ca/net/base/stale_while_revalidate_experiment_domains.h
[add] http://crrev.com/51d6bcfd10cb847da284a7aa1202f92ea37b74ca/net/base/stale_while_revalidate_experiment_domains_unittest.cc
[modify] http://crrev.com/51d6bcfd10cb847da284a7aa1202f92ea37b74ca/net/net.gyp
[modify] http://crrev.com/51d6bcfd10cb847da284a7aa1202f92ea37b74ca/net/net.gypi
[modify] http://crrev.com/51d6bcfd10cb847da284a7aa1202f92ea37b74ca/tools/metrics/histograms/histograms.xml

Project Member

Comment 38 by bugdroid1@chromium.org, Nov 25 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d7c2a3547acc7ae725795cdee2ec01f09f651b93

commit d7c2a3547acc7ae725795cdee2ec01f09f651b93
Author: raymes <raymes@chromium.org>
Date: Wed Nov 25 06:30:34 2015

Revert "Add StaleWhileRevalidateExperiment histograms."

This reverts commit 51d6bcfd10cb847da284a7aa1202f92ea37b74ca. It looks like it
might have introduced a new static initializer, though I can't tell where.
See https://build.chromium.org/p/chromium/builders/Linux/builds/68841/steps/sizes/logs/stdio
(there is a new SI detected in
stale_while_revalidate_experiment_domains.cc _GLOBAL__sub_I_stale_while_revalidate_experiment_domains.cc+0xb)

BUG=348877
TBR=ricea@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.chromium.org/1466313005

Cr-Commit-Position: refs/heads/master@{#361592}

[delete] http://crrev.com/13a6266bde8429360d2d657f23aadff06d91961a/chrome/browser/page_load_metrics/observers/stale_while_revalidate_metrics_observer.cc
[delete] http://crrev.com/13a6266bde8429360d2d657f23aadff06d91961a/chrome/browser/page_load_metrics/observers/stale_while_revalidate_metrics_observer.h
[modify] http://crrev.com/d7c2a3547acc7ae725795cdee2ec01f09f651b93/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc
[modify] http://crrev.com/d7c2a3547acc7ae725795cdee2ec01f09f651b93/chrome/browser/ui/BUILD.gn
[modify] http://crrev.com/d7c2a3547acc7ae725795cdee2ec01f09f651b93/chrome/chrome_browser.gypi
[modify] http://crrev.com/d7c2a3547acc7ae725795cdee2ec01f09f651b93/chrome/chrome_browser_ui.gypi
[modify] http://crrev.com/d7c2a3547acc7ae725795cdee2ec01f09f651b93/net/BUILD.gn
[delete] http://crrev.com/13a6266bde8429360d2d657f23aadff06d91961a/net/base/stale_while_revalidate_experiment_domains.cc
[delete] http://crrev.com/13a6266bde8429360d2d657f23aadff06d91961a/net/base/stale_while_revalidate_experiment_domains.gperf
[delete] http://crrev.com/13a6266bde8429360d2d657f23aadff06d91961a/net/base/stale_while_revalidate_experiment_domains.h
[delete] http://crrev.com/13a6266bde8429360d2d657f23aadff06d91961a/net/base/stale_while_revalidate_experiment_domains_unittest.cc
[modify] http://crrev.com/d7c2a3547acc7ae725795cdee2ec01f09f651b93/net/net.gyp
[modify] http://crrev.com/d7c2a3547acc7ae725795cdee2ec01f09f651b93/net/net.gypi
[modify] http://crrev.com/d7c2a3547acc7ae725795cdee2ec01f09f651b93/tools/metrics/histograms/histograms.xml

Comment 39 by ricea@chromium.org, Nov 25 2015

Blockedon: chromium:561549

Comment 40 by ricea@chromium.org, Nov 25 2015

Blockedon: chromium:561591

Comment 41 by ricea@chromium.org, Nov 25 2015

Blockedon: chromium:561609

Comment 42 by ricea@chromium.org, Nov 25 2015

Blockedon: chromium:561610
Project Member

Comment 43 by bugdroid1@chromium.org, Dec 1 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7afa52378c589e9810345b369669bdcc60261b68

commit 7afa52378c589e9810345b369669bdcc60261b68
Author: ricea <ricea@chromium.org>
Date: Tue Dec 01 20:55:23 2015

Reland of "Add StaleWhileRevalidateExperiment histograms."

Add histograms
PageLoad.Clients.StaleWhileRevalidateExperiment.Timing2.NavigationToLoadEventFired,
PageLoad.Clients.StaleWhileRevalidateExperiment.Timing2.NavigationToFirstLayout,
and
PageLoad.Clients.StaleWhileRevalidateExperiment.Timing2.NavigationToFirstTextPaint.

These behave the same as the base histograms, but they are only recorded
for a subset of domains which have render-blocking resources served with
the Cache-Control stale-while-revalidate directive.

These histograms permit us to measure the benefit in load time from the
implementation of the directive wihout noise from domains which don't
use it.

This CL was originally landed as
https://codereview.chromium.org/1433893002/ but reverted due to
accidentally introducing a static initialiser. This CL is identical to
the previous one except that it no longer aliases
base::StringPiece::npos to work around the static initialiser issue
http://crbug.com/561283.

TBR=eroman
BUG=348877
TEST=manual

Review URL: https://codereview.chromium.org/1479493002

Cr-Commit-Position: refs/heads/master@{#362491}

[add] http://crrev.com/7afa52378c589e9810345b369669bdcc60261b68/chrome/browser/page_load_metrics/observers/stale_while_revalidate_metrics_observer.cc
[add] http://crrev.com/7afa52378c589e9810345b369669bdcc60261b68/chrome/browser/page_load_metrics/observers/stale_while_revalidate_metrics_observer.h
[modify] http://crrev.com/7afa52378c589e9810345b369669bdcc60261b68/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc
[modify] http://crrev.com/7afa52378c589e9810345b369669bdcc60261b68/chrome/browser/ui/BUILD.gn
[modify] http://crrev.com/7afa52378c589e9810345b369669bdcc60261b68/chrome/chrome_browser.gypi
[modify] http://crrev.com/7afa52378c589e9810345b369669bdcc60261b68/chrome/chrome_browser_ui.gypi
[modify] http://crrev.com/7afa52378c589e9810345b369669bdcc60261b68/net/BUILD.gn
[add] http://crrev.com/7afa52378c589e9810345b369669bdcc60261b68/net/base/stale_while_revalidate_experiment_domains.cc
[add] http://crrev.com/7afa52378c589e9810345b369669bdcc60261b68/net/base/stale_while_revalidate_experiment_domains.gperf
[add] http://crrev.com/7afa52378c589e9810345b369669bdcc60261b68/net/base/stale_while_revalidate_experiment_domains.h
[add] http://crrev.com/7afa52378c589e9810345b369669bdcc60261b68/net/base/stale_while_revalidate_experiment_domains_unittest.cc
[modify] http://crrev.com/7afa52378c589e9810345b369669bdcc60261b68/net/net.gyp
[modify] http://crrev.com/7afa52378c589e9810345b369669bdcc60261b68/net/net.gypi
[modify] http://crrev.com/7afa52378c589e9810345b369669bdcc60261b68/tools/metrics/histograms/histograms.xml

Blockedon: chromium:564517
Added a new issue to track the current round of experiments specifically.
Blockedon: chromium:567721
Project Member

Comment 46 by bugdroid1@chromium.org, Dec 10 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/96e3ce421fbe8b8133bf9852b7d7cf16e8521026

commit 96e3ce421fbe8b8133bf9852b7d7cf16e8521026
Author: ricea <ricea@chromium.org>
Date: Thu Dec 10 02:13:29 2015

content::ResourceDispatcherHostImpl changes for stale-while-revalidate

Inform //net that we support async revalidation using the net::LOAD_SUPPORT_ASYNC_REVALIDATION flag. Issue async revalidations when response info had the async_revalidation_required flag.

See design doc at
https://docs.google.com/a/chromium.org/document/d/1nBhr25nSJgoyAh4S1-U5h2sH70Iz4RR0NAfXNL79G5Y/edit

BUG=348877
TEST=content_unittests

Review URL: https://codereview.chromium.org/1041993004

Cr-Commit-Position: refs/heads/master@{#364253}

[add] http://crrev.com/96e3ce421fbe8b8133bf9852b7d7cf16e8521026/content/browser/loader/async_revalidation_driver.cc
[add] http://crrev.com/96e3ce421fbe8b8133bf9852b7d7cf16e8521026/content/browser/loader/async_revalidation_driver.h
[add] http://crrev.com/96e3ce421fbe8b8133bf9852b7d7cf16e8521026/content/browser/loader/async_revalidation_driver_unittest.cc
[add] http://crrev.com/96e3ce421fbe8b8133bf9852b7d7cf16e8521026/content/browser/loader/async_revalidation_manager.cc
[add] http://crrev.com/96e3ce421fbe8b8133bf9852b7d7cf16e8521026/content/browser/loader/async_revalidation_manager.h
[add] http://crrev.com/96e3ce421fbe8b8133bf9852b7d7cf16e8521026/content/browser/loader/async_revalidation_manager_unittest.cc
[modify] http://crrev.com/96e3ce421fbe8b8133bf9852b7d7cf16e8521026/content/browser/loader/resource_dispatcher_host_impl.cc
[modify] http://crrev.com/96e3ce421fbe8b8133bf9852b7d7cf16e8521026/content/browser/loader/resource_dispatcher_host_impl.h
[modify] http://crrev.com/96e3ce421fbe8b8133bf9852b7d7cf16e8521026/content/browser/loader/resource_request_info_impl.cc
[modify] http://crrev.com/96e3ce421fbe8b8133bf9852b7d7cf16e8521026/content/browser/loader/resource_request_info_impl.h
[modify] http://crrev.com/96e3ce421fbe8b8133bf9852b7d7cf16e8521026/content/content_browser.gypi
[modify] http://crrev.com/96e3ce421fbe8b8133bf9852b7d7cf16e8521026/content/content_tests.gypi
[modify] http://crrev.com/96e3ce421fbe8b8133bf9852b7d7cf16e8521026/content/public/browser/resource_throttle.h
[modify] http://crrev.com/96e3ce421fbe8b8133bf9852b7d7cf16e8521026/content/public/common/content_switches.cc
[modify] http://crrev.com/96e3ce421fbe8b8133bf9852b7d7cf16e8521026/content/public/common/content_switches.h
[modify] http://crrev.com/96e3ce421fbe8b8133bf9852b7d7cf16e8521026/tools/metrics/histograms/histograms.xml

Comment 47 by ricea@chromium.org, Dec 11 2015

The new experimental implementation is available in about:flags in versions 49.0.2588.0 and later (turned off by default, naturally).
Project Member

Comment 48 by bugdroid1@chromium.org, Jan 13 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0f39f4a074e5bb473ec97e5adf50e772c769e773

commit 0f39f4a074e5bb473ec97e5adf50e772c769e773
Author: ricea <ricea@chromium.org>
Date: Wed Jan 13 07:14:18 2016

content_browsertests for stale-while-revalidate

Validate correct end-to-end behaviour for stale-while-revalidate.

BUG=348877
TEST=content_browsertests

Review URL: https://codereview.chromium.org/1308203003

Cr-Commit-Position: refs/heads/master@{#369116}

[add] http://crrev.com/0f39f4a074e5bb473ec97e5adf50e772c769e773/content/browser/loader/async_revalidation_manager_browsertest.cc
[modify] http://crrev.com/0f39f4a074e5bb473ec97e5adf50e772c769e773/content/content_tests.gypi

Comment 49 by ricea@chromium.org, Feb 12 2016

Status: Available

Comment 50 by ricea@chromium.org, Feb 12 2016

Owner: ----
Owner: toyoshim@chromium.org
Blocking: 591287
Status: Started (was: Available)
Labels: -Pri-2 -M-49 Pri-3
There's a comment in InitializePageLoadMetricsForWebContents:

// TODO(ricea): Remove this in April 2016 or before. crbug.com/348877

Is this ready to be removed? If you still need it, that's fine, but if we're done with it, let's remove it.

Thanks,
Bryan
Can we keep this code for a while since we got unexpected results in the first study and ran another one now.
In that case, can you please keep an appropriate bug updated with the status? If there is meaningful information to share that would change your plans, sharing that appropriately would be most helpful.
Sorry for being lazy to update this bug. Some backgrounds are shared at  crbug.com/564517  and mail post to groups. But I do not have enough throughput to covert everything now because the main eng who works on this bug has took a leave.

We would summarize study results again, and decide the next plan by the end of this Q2.
Fine to keep the observer code around as long as you need it.
Ping
Owner: kenjibaheux@chromium.org
Status: Assigned (was: Started)
The project is not prioritized also in this Q3, but some Loading members have took preliminary survey in context of Everfresh, pre-*, and so on.

Kenji, do you think it's fine to turn down the s-w-r study and to remove related metrics code?
Otherwise, we may update the TODO comments to refer server side json files that always explicitly declare actually study running period. It can be always up to date.
Cc: toyoshim@chromium.org
If the question is about whether or not we need the Loading metrics for the hand-picked origins, the answer is: "no, we can remove the list and the associated PageLoad.Clients.StaleWhileRevalidateExperiment.* metrics".

I just looked at the experiment results again and statistical significance hasn't been reached for this subset of origins on any of the PageLoad.Clients.StaleWhileRevalidateExperiment.* metrics (volume is way too low; large error bars). 

Similar conclusion for the overall loading metrics, no statistical significance. Unsurprisingly, s-w-r usage isn't high enough to impact the overall loading metrics; and there is also something to be said about the benefits beyond Loading.

There is still a lot of excitement in the feature (e.g. AMP, Ads, Social, Fonts, CDNs, discussed in the context of some interventions...). Just yesterday, I found out that a tier 1 website was using it abundantly in their next web app.

Ultimately, I'm not sure why we got pushed into this analysis paralysis corner: the feature makes sense, on the other hand trying to gauge its impact without launching it properly and ramping up usage doesn't make sense. 

We can use Paris' team tooling to simulate an outcome for a given hypothesis of adoption but do we really need to go through such trouble? The only benefits I can see is that if the result doesn't match the expectations, it probably means that we either:
 1. have an issue in the implementation,
 2. have a total misunderstanding of the problem space,
 3. miss the right metrics to capture the user benefits.
Cc: gavinp@chromium.org cbentzel@chromium.org
 Issue 166766  has been merged into this issue.
Status: Archived (was: Assigned)
[Update on SWR]

We've had a behind the flag implementation for a while and did an experiment but haven't been able to ship it due to some tough remaining issues... We believe that these issues are specific to Chrome's current architecture. In particular, problems with redirects and cookies have been noted as serious show-stopper because getting both of these to work correctly would require some major changes to the way the cache interfaces with the rest of Chrome's net layer. 

Given upcoming major refactors (e.g. PlzNavigate, Servicification of //net) that would be impaired by the current implementation of S-W-R, we have decided to temporarily remove our implementation. 

We still believe that this primitive has significant potential. Mozilla has an open bug[1] for this feature and we hope that they will be able to ship this primitive soon so that the community can help us better understand its impact and therefore facilitate a proper follow-up in Chrome and hopefully other browsers.

[1] https://bugzilla.mozilla.org/show_bug.cgi?id=995651

Comment 67 by jmedley@google.com, Mar 10 2017

Should the status item be removed?
https://www.chromestatus.com/features/5050913014153216

Joe Medley | Technical Writer, Chrome DevRel | jmedley@google.com |
 816-678-7195
*If an API's not documented it doesn't exist.*
Project Member

Comment 68 by bugdroid1@chromium.org, Mar 22 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2625374404695b3c1c5e62c0b7921fdde1395c7c

commit 2625374404695b3c1c5e62c0b7921fdde1395c7c
Author: scottmg <scottmg@chromium.org>
Date: Wed Mar 22 01:42:48 2017

Remove stale-while-revalidate from content and chrome

This removes the code for the stale-while-revalidate experiment from
content and the flags entry from chrome. This simplifies some c/b/loader
separation particularly in resource_dispatcher_host_impl.cc.

See https://bugs.chromium.org/p/chromium/issues/detail?id=348877#c66 for
details on the experiment turndown.

BUG=348877, 700568 

Review-Url: https://codereview.chromium.org/2764683002
Cr-Commit-Position: refs/heads/master@{#458613}

[modify] https://crrev.com/2625374404695b3c1c5e62c0b7921fdde1395c7c/chrome/app/generated_resources.grd
[modify] https://crrev.com/2625374404695b3c1c5e62c0b7921fdde1395c7c/chrome/browser/about_flags.cc
[modify] https://crrev.com/2625374404695b3c1c5e62c0b7921fdde1395c7c/content/browser/BUILD.gn
[modify] https://crrev.com/2625374404695b3c1c5e62c0b7921fdde1395c7c/content/browser/loader/DEPS
[modify] https://crrev.com/2625374404695b3c1c5e62c0b7921fdde1395c7c/content/browser/loader/async_resource_handler_unittest.cc
[delete] https://crrev.com/27d06a66030cece252b659e1eca0be955d4d7475/content/browser/loader/async_revalidation_driver.cc
[delete] https://crrev.com/27d06a66030cece252b659e1eca0be955d4d7475/content/browser/loader/async_revalidation_driver.h
[delete] https://crrev.com/27d06a66030cece252b659e1eca0be955d4d7475/content/browser/loader/async_revalidation_driver_unittest.cc
[delete] https://crrev.com/27d06a66030cece252b659e1eca0be955d4d7475/content/browser/loader/async_revalidation_manager.cc
[delete] https://crrev.com/27d06a66030cece252b659e1eca0be955d4d7475/content/browser/loader/async_revalidation_manager.h
[delete] https://crrev.com/27d06a66030cece252b659e1eca0be955d4d7475/content/browser/loader/async_revalidation_manager_browsertest.cc
[delete] https://crrev.com/27d06a66030cece252b659e1eca0be955d4d7475/content/browser/loader/async_revalidation_manager_unittest.cc
[modify] https://crrev.com/2625374404695b3c1c5e62c0b7921fdde1395c7c/content/browser/loader/netlog_observer_unittest.cc
[modify] https://crrev.com/2625374404695b3c1c5e62c0b7921fdde1395c7c/content/browser/loader/resource_dispatcher_host_impl.cc
[modify] https://crrev.com/2625374404695b3c1c5e62c0b7921fdde1395c7c/content/browser/loader/resource_dispatcher_host_impl.h
[modify] https://crrev.com/2625374404695b3c1c5e62c0b7921fdde1395c7c/content/browser/loader/resource_request_info_impl.cc
[modify] https://crrev.com/2625374404695b3c1c5e62c0b7921fdde1395c7c/content/browser/loader/resource_request_info_impl.h
[modify] https://crrev.com/2625374404695b3c1c5e62c0b7921fdde1395c7c/content/public/common/content_features.cc
[modify] https://crrev.com/2625374404695b3c1c5e62c0b7921fdde1395c7c/content/public/common/content_features.h
[modify] https://crrev.com/2625374404695b3c1c5e62c0b7921fdde1395c7c/content/test/BUILD.gn

Project Member

Comment 69 by bugdroid1@chromium.org, Mar 22 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/69708855a86d235ff43a11c1b525f8518e608056

commit 69708855a86d235ff43a11c1b525f8518e608056
Author: scottmg <scottmg@chromium.org>
Date: Wed Mar 22 19:36:31 2017

Remove stale-while-revalidate from blink

The stale-while-revalidate experiment is being turned down for the
moment. This current implementation is removed due to complexity of
interaction with other existing efforts. See
https://bugs.chromium.org/p/chromium/issues/detail?id=561609#c10.

BUG=348877,  520613 ,  700568 

Review-Url: https://codereview.chromium.org/2767853003
Cr-Commit-Position: refs/heads/master@{#458842}

[modify] https://crrev.com/69708855a86d235ff43a11c1b525f8518e608056/third_party/WebKit/LayoutTests/TestExpectations
[delete] https://crrev.com/6acb535d91ce5fc01546dc63b07b736e919accbb/third_party/WebKit/LayoutTests/http/tests/cache/freshness-header.html
[delete] https://crrev.com/6acb535d91ce5fc01546dc63b07b736e919accbb/third_party/WebKit/LayoutTests/http/tests/cache/resources/stale-while-revalidate.php
[modify] https://crrev.com/69708855a86d235ff43a11c1b525f8518e608056/third_party/WebKit/Source/platform/loader/fetch/Resource.cpp
[modify] https://crrev.com/69708855a86d235ff43a11c1b525f8518e608056/third_party/WebKit/Source/platform/loader/fetch/Resource.h
[modify] https://crrev.com/69708855a86d235ff43a11c1b525f8518e608056/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp
[modify] https://crrev.com/69708855a86d235ff43a11c1b525f8518e608056/third_party/WebKit/Source/platform/loader/fetch/ResourceResponse.cpp
[modify] https://crrev.com/69708855a86d235ff43a11c1b525f8518e608056/third_party/WebKit/Source/platform/loader/fetch/ResourceResponse.h
[modify] https://crrev.com/69708855a86d235ff43a11c1b525f8518e608056/third_party/WebKit/Source/platform/network/HTTPParsers.cpp
[modify] https://crrev.com/69708855a86d235ff43a11c1b525f8518e608056/third_party/WebKit/Source/platform/network/HTTPParsers.h

Project Member

Comment 70 by bugdroid1@chromium.org, Mar 27 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/75221e53b71cc5eb37cbfb957124025259aa5dab

commit 75221e53b71cc5eb37cbfb957124025259aa5dab
Author: scottmg <scottmg@chromium.org>
Date: Mon Mar 27 19:50:22 2017

Remove stale-while-revalidate from net

The stale-while-revalidate experiment is being turned down for the
moment. This current implementation is removed due to complexity of
interaction with other existing efforts. See
https://bugs.chromium.org/p/chromium/issues/detail?id=561609#c10.

BUG=348877, 700568 

Review-Url: https://codereview.chromium.org/2763393002
Cr-Commit-Position: refs/heads/master@{#459857}

[modify] https://crrev.com/75221e53b71cc5eb37cbfb957124025259aa5dab/net/base/load_flags_list.h
[modify] https://crrev.com/75221e53b71cc5eb37cbfb957124025259aa5dab/net/http/http_cache_transaction.cc
[modify] https://crrev.com/75221e53b71cc5eb37cbfb957124025259aa5dab/net/http/http_cache_transaction.h
[modify] https://crrev.com/75221e53b71cc5eb37cbfb957124025259aa5dab/net/http/http_cache_unittest.cc
[modify] https://crrev.com/75221e53b71cc5eb37cbfb957124025259aa5dab/net/http/http_response_headers.cc
[modify] https://crrev.com/75221e53b71cc5eb37cbfb957124025259aa5dab/net/http/http_response_headers.h
[modify] https://crrev.com/75221e53b71cc5eb37cbfb957124025259aa5dab/net/http/http_response_headers_unittest.cc
[modify] https://crrev.com/75221e53b71cc5eb37cbfb957124025259aa5dab/net/http/http_response_info.cc
[modify] https://crrev.com/75221e53b71cc5eb37cbfb957124025259aa5dab/net/http/http_response_info.h
[modify] https://crrev.com/75221e53b71cc5eb37cbfb957124025259aa5dab/net/http/http_response_info_unittest.cc
[modify] https://crrev.com/75221e53b71cc5eb37cbfb957124025259aa5dab/net/url_request/sdch_dictionary_fetcher.cc
[modify] https://crrev.com/75221e53b71cc5eb37cbfb957124025259aa5dab/tools/metrics/histograms/histograms.xml

Project Member

Comment 71 by bugdroid1@chromium.org, Jun 12

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/57b4f9dcb5370e1f41e7be87410253cbb7837528

commit 57b4f9dcb5370e1f41e7be87410253cbb7837528
Author: Dave Tapuska <dtapuska@chromium.org>
Date: Tue Jun 12 01:55:05 2018

Add stale-while-revalidate support to network stack.

This changes adds a load flag that blink will set to request
resources that are stale from the network cache. Upon receiving this
flag and returning a stale resource the network stack will set a
timeout of 1 minute for the resource to be validated. During this
period the stale resource can continue to be returned but after that
if not revalidated the resource is considered invalid.

A large portion of this change is reverting
crrev.com/75221e53b71cc5eb37cbfb957124025259aa5dab

BUG=348877

Change-Id: I889f6e4c9b59b95bc26ce3a8f8f9d9c15da0ed71
Reviewed-on: https://chromium-review.googlesource.com/1085850
Commit-Queue: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: David Benjamin <davidben@chromium.org>
Reviewed-by: Maks Orlovich <morlovich@chromium.org>
Cr-Commit-Position: refs/heads/master@{#566258}
[modify] https://crrev.com/57b4f9dcb5370e1f41e7be87410253cbb7837528/net/base/load_flags_list.h
[modify] https://crrev.com/57b4f9dcb5370e1f41e7be87410253cbb7837528/net/http/http_cache_transaction.cc
[modify] https://crrev.com/57b4f9dcb5370e1f41e7be87410253cbb7837528/net/http/http_cache_transaction.h
[modify] https://crrev.com/57b4f9dcb5370e1f41e7be87410253cbb7837528/net/http/http_cache_unittest.cc
[modify] https://crrev.com/57b4f9dcb5370e1f41e7be87410253cbb7837528/net/http/http_response_headers.cc
[modify] https://crrev.com/57b4f9dcb5370e1f41e7be87410253cbb7837528/net/http/http_response_headers.h
[modify] https://crrev.com/57b4f9dcb5370e1f41e7be87410253cbb7837528/net/http/http_response_headers_unittest.cc
[modify] https://crrev.com/57b4f9dcb5370e1f41e7be87410253cbb7837528/net/http/http_response_info.cc
[modify] https://crrev.com/57b4f9dcb5370e1f41e7be87410253cbb7837528/net/http/http_response_info.h
[modify] https://crrev.com/57b4f9dcb5370e1f41e7be87410253cbb7837528/net/http/http_response_info_unittest.cc

Owner: dtapu...@chromium.org
Status: Assigned (was: Archived)
Project Member

Comment 73 by bugdroid1@chromium.org, Jun 15

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/cd71c70f139789cbc677345e5a26eb9a20f6bddf

commit cd71c70f139789cbc677345e5a26eb9a20f6bddf
Author: Dave Tapuska <dtapuska@chromium.org>
Date: Fri Jun 15 17:50:00 2018

Add load flags and response bits to communicate Stale While Revalidate.

This change does not implement anything other than plumbing load
and response bits from the network stack across from the blink
loader.

BUG=348877

Change-Id: Id2b455352b8b26c93cf5e87bee054db90e774480
Reviewed-on: https://chromium-review.googlesource.com/1101237
Commit-Queue: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#567722}
[modify] https://crrev.com/cd71c70f139789cbc677345e5a26eb9a20f6bddf/content/browser/loader/resource_loader.cc
[modify] https://crrev.com/cd71c70f139789cbc677345e5a26eb9a20f6bddf/content/renderer/loader/web_url_loader_impl.cc
[modify] https://crrev.com/cd71c70f139789cbc677345e5a26eb9a20f6bddf/content/renderer/loader/web_url_request_util.cc
[modify] https://crrev.com/cd71c70f139789cbc677345e5a26eb9a20f6bddf/services/network/public/cpp/network_ipc_param_traits.h
[modify] https://crrev.com/cd71c70f139789cbc677345e5a26eb9a20f6bddf/services/network/public/cpp/resource_response.cc
[modify] https://crrev.com/cd71c70f139789cbc677345e5a26eb9a20f6bddf/services/network/public/cpp/resource_response_info.cc
[modify] https://crrev.com/cd71c70f139789cbc677345e5a26eb9a20f6bddf/services/network/public/cpp/resource_response_info.h
[modify] https://crrev.com/cd71c70f139789cbc677345e5a26eb9a20f6bddf/services/network/url_loader.cc
[modify] https://crrev.com/cd71c70f139789cbc677345e5a26eb9a20f6bddf/third_party/blink/public/platform/web_url_request.h
[modify] https://crrev.com/cd71c70f139789cbc677345e5a26eb9a20f6bddf/third_party/blink/public/platform/web_url_response.h
[modify] https://crrev.com/cd71c70f139789cbc677345e5a26eb9a20f6bddf/third_party/blink/renderer/platform/exported/web_url_request.cc
[modify] https://crrev.com/cd71c70f139789cbc677345e5a26eb9a20f6bddf/third_party/blink/renderer/platform/exported/web_url_response.cc
[modify] https://crrev.com/cd71c70f139789cbc677345e5a26eb9a20f6bddf/third_party/blink/renderer/platform/loader/fetch/resource_request.cc
[modify] https://crrev.com/cd71c70f139789cbc677345e5a26eb9a20f6bddf/third_party/blink/renderer/platform/loader/fetch/resource_request.h
[modify] https://crrev.com/cd71c70f139789cbc677345e5a26eb9a20f6bddf/third_party/blink/renderer/platform/loader/fetch/resource_response.cc
[modify] https://crrev.com/cd71c70f139789cbc677345e5a26eb9a20f6bddf/third_party/blink/renderer/platform/loader/fetch/resource_response.h

Should we create a new bug for this work? Are we doing the (broken-as-spec'd) SWR or a different one? If the latter, a new bug seems better to track that work and let this bug (the broken SWR) fade away :)
It is SWR as specified but with a contract between the http cache and the requestor. If the requestor fails to re-validate the resource within 60s or it fails in anyway then it converges to the state where stale-while-revalidate isn't present. That was the main objections with the current specification and is more of an implementation detail.
Project Member

Comment 76 by bugdroid1@chromium.org, Jun 18

Project Member

Comment 78 by bugdroid1@chromium.org, Jun 21

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b17cf903956f3727d74464dbac847f62ba00b80e

commit b17cf903956f3727d74464dbac847f62ba00b80e
Author: Dave Tapuska <dtapuska@chromium.org>
Date: Thu Jun 21 15:03:10 2018

Compute the revalidation based on the stale-while-revalidate attribute.

Add additional API to determine if we should revalidate if we are allowing
a stale response. Add a test to cover the different intervals of what
should be returned by the API.

BUG=348877

Change-Id: I69be1c768e4896362406bb80a3dde307edae27d2
Reviewed-on: https://chromium-review.googlesource.com/1102352
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Commit-Queue: Dave Tapuska <dtapuska@chromium.org>
Cr-Commit-Position: refs/heads/master@{#569263}
[modify] https://crrev.com/b17cf903956f3727d74464dbac847f62ba00b80e/third_party/blink/renderer/platform/loader/fetch/resource.cc
[modify] https://crrev.com/b17cf903956f3727d74464dbac847f62ba00b80e/third_party/blink/renderer/platform/loader/fetch/resource.h
[modify] https://crrev.com/b17cf903956f3727d74464dbac847f62ba00b80e/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
[modify] https://crrev.com/b17cf903956f3727d74464dbac847f62ba00b80e/third_party/blink/renderer/platform/loader/fetch/resource_response.cc
[modify] https://crrev.com/b17cf903956f3727d74464dbac847f62ba00b80e/third_party/blink/renderer/platform/loader/fetch/resource_response.h
[modify] https://crrev.com/b17cf903956f3727d74464dbac847f62ba00b80e/third_party/blink/renderer/platform/loader/fetch/resource_test.cc

Project Member

Comment 79 by bugdroid1@chromium.org, Jul 4

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/83f5e4085818f8dd5d69f2fb37e55a5e0dbfa6ac

commit 83f5e4085818f8dd5d69f2fb37e55a5e0dbfa6ac
Author: Dave Tapuska <dtapuska@chromium.org>
Date: Wed Jul 04 16:53:42 2018

Add StaleRevalidationResourceClient fetcher.

When a stale resource is detected a subsequent request will be queued
via a StaleRevalidateResourceClient. When the subsequent resource
fetch completes it will be removed from the MemoryCache.

Design: https://docs.google.com/document/d/1wqbhCdf3eCv-VuUoV34xD2KfMinOCxH4fRe5EDCtXIo/edit

BUG=348877

Change-Id: I27ba8f295fe070e7a34eed7a362921ab4ce544cf
Reviewed-on: https://chromium-review.googlesource.com/1103064
Commit-Queue: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: Ilya Sherman <isherman@chromium.org>
Reviewed-by: Hiroshige Hayashizaki <hiroshige@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#572606}
[add] https://crrev.com/83f5e4085818f8dd5d69f2fb37e55a5e0dbfa6ac/third_party/WebKit/LayoutTests/http/tests/cache/resources/stale-script.php
[add] https://crrev.com/83f5e4085818f8dd5d69f2fb37e55a5e0dbfa6ac/third_party/WebKit/LayoutTests/http/tests/cache/stale-while-revalidate.php
[modify] https://crrev.com/83f5e4085818f8dd5d69f2fb37e55a5e0dbfa6ac/third_party/blink/renderer/platform/loader/BUILD.gn
[modify] https://crrev.com/83f5e4085818f8dd5d69f2fb37e55a5e0dbfa6ac/third_party/blink/renderer/platform/loader/fetch/fetch_parameters.h
[modify] https://crrev.com/83f5e4085818f8dd5d69f2fb37e55a5e0dbfa6ac/third_party/blink/renderer/platform/loader/fetch/raw_resource.h
[modify] https://crrev.com/83f5e4085818f8dd5d69f2fb37e55a5e0dbfa6ac/third_party/blink/renderer/platform/loader/fetch/resource.cc
[modify] https://crrev.com/83f5e4085818f8dd5d69f2fb37e55a5e0dbfa6ac/third_party/blink/renderer/platform/loader/fetch/resource.h
[modify] https://crrev.com/83f5e4085818f8dd5d69f2fb37e55a5e0dbfa6ac/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
[modify] https://crrev.com/83f5e4085818f8dd5d69f2fb37e55a5e0dbfa6ac/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h
[modify] https://crrev.com/83f5e4085818f8dd5d69f2fb37e55a5e0dbfa6ac/third_party/blink/renderer/platform/loader/fetch/resource_fetcher_test.cc
[modify] https://crrev.com/83f5e4085818f8dd5d69f2fb37e55a5e0dbfa6ac/third_party/blink/renderer/platform/loader/fetch/resource_test.cc
[add] https://crrev.com/83f5e4085818f8dd5d69f2fb37e55a5e0dbfa6ac/third_party/blink/renderer/platform/loader/fetch/stale_revalidation_resource_client.cc
[add] https://crrev.com/83f5e4085818f8dd5d69f2fb37e55a5e0dbfa6ac/third_party/blink/renderer/platform/loader/fetch/stale_revalidation_resource_client.h
[modify] https://crrev.com/83f5e4085818f8dd5d69f2fb37e55a5e0dbfa6ac/third_party/blink/renderer/platform/loader/testing/fetch_testing_platform_support.cc
[modify] https://crrev.com/83f5e4085818f8dd5d69f2fb37e55a5e0dbfa6ac/tools/metrics/histograms/histograms.xml

Project Member

Comment 80 by bugdroid1@chromium.org, Jul 12

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/12f1a6d2b078baa8bda6dd3f9b94be9897a12e9f

commit 12f1a6d2b078baa8bda6dd3f9b94be9897a12e9f
Author: Dave Tapuska <dtapuska@chromium.org>
Date: Thu Jul 12 15:15:56 2018

Add Blink.ResourceFetcher.StaleWhileRevalidateDuration histogram.

This histogram tracks the duration of completed stale revalidation
attempts. This value will be used as a rough approximation of
the benefit received by using Stale While Revalidate.

BUG=348877

Change-Id: I47601e667394c401ccdc96afc4d73d6c464faa3b
Reviewed-on: https://chromium-review.googlesource.com/1133961
Commit-Queue: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: Ilya Sherman <isherman@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#574564}
[modify] https://crrev.com/12f1a6d2b078baa8bda6dd3f9b94be9897a12e9f/third_party/blink/renderer/platform/loader/fetch/stale_revalidation_resource_client.cc
[modify] https://crrev.com/12f1a6d2b078baa8bda6dd3f9b94be9897a12e9f/third_party/blink/renderer/platform/loader/fetch/stale_revalidation_resource_client.h
[modify] https://crrev.com/12f1a6d2b078baa8bda6dd3f9b94be9897a12e9f/tools/metrics/histograms/histograms.xml

Project Member

Comment 81 by bugdroid1@chromium.org, Jul 12

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2fc2f58c6417a00888317b79f40fd904b1f6628b

commit 2fc2f58c6417a00888317b79f40fd904b1f6628b
Author: Dave Tapuska <dtapuska@chromium.org>
Date: Thu Jul 12 16:04:29 2018

Enable StaleWhileRevalidate in experimental features.

To gather some stability enable it for experimental features before
we do the origin trial.

BUG=348877

Change-Id: I7598f35ac87b719305c6efa98c37de2eec8031a4
Reviewed-on: https://chromium-review.googlesource.com/1134883
Reviewed-by: Robert Flack <flackr@chromium.org>
Commit-Queue: Dave Tapuska <dtapuska@chromium.org>
Cr-Commit-Position: refs/heads/master@{#574581}
[modify] https://crrev.com/2fc2f58c6417a00888317b79f40fd904b1f6628b/third_party/blink/renderer/platform/runtime_enabled_features.json5

Sign in to add a comment