>
> What is an 'off-by-default experiment'? Is that a dev trial flag?


Just an ordinary experiment, behind a flag which is off-by-default. So most
users get the default behaviour (no single-keyed cache), except for those
in the experimental group.

On Wed, 27 Apr 2022 at 00:50, Joe Medley <jmed...@google.com> wrote:

> What is an 'off-by-default experiment'? Is that a dev trial flag?
> Joe Medley | Technical Writer, Chrome DevRel | jmed...@google.com |
>  816-678-7195
> *If an API's not documented it doesn't exist.*
>
>
> On Tue, Apr 26, 2022 at 4:59 AM Daisuke Enomoto <denom...@chromium.org>
> wrote:
>
>> Contact emails
>>
>> ri...@chromium.org, nidhij...@chromium.org, denom...@chromium.org
>>
>> Explainer
>>
>>
>> https://docs.google.com/document/d/1pvaMg7J5beBXD7trzHJH_MDULc_wRHLx40MFYAmjknE/edit
>>
>> Specification
>>
>> N/A (because there are no web-exposed changes)
>>
>> Summary
>>
>> This limited experiment measures how much "pervasive payloads" contribute
>> to the performance impact of the split HTTP cache in each Chrome channel
>> over a three-week period. Pervasive payloads are those third-party payloads
>> included on at least 500 sites and fetched at least 10M times in a month,
>> based on Chrome's analysis (payload list included below). This experiment
>> further measures the impact on Core Web Vitals metrics of restoring
>> pervasive payloads (and only pervasive payloads) to a single-keyed cache
>> regime. The privacy benefits of the split HTTP cache are preserved.
>>
>> Blink component
>>
>> Blink>Network
>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3ENetwork>
>>
>> Motivation
>>
>> Browsers split HTTP caches based on the top-frame visited origin
>> (“double-keyed” or "triple-keyed" caching) to prevent sites from tracking
>> users via a timing attack on a cross-site client cache.
>>
>> Chrome’s analysis estimates that split caching results in a 3% increase
>> in cache misses, i.e. fetches for which a payload exists in the cache of
>> the user's device, but is unavailable to the page because it was fetched by
>> the user while loading a page from a different origin. This results in
>> approximately 4% more total bytes being fetched over the network.
>>
>> Our analysis further revealed that many of the redundant fetches caused
>> by split caching were for common payloads associated with displaying user
>> content (libraries, fonts, widgets, ads) or common payloads that assist in
>> operating online businesses (analytics). The delayed arrival of these
>> common payloads resulted in visible "jank" for users, impacting performance
>> metrics like LCP <https://web.dev/lcp>, FCP <https://web.dev/fcp> and CLS
>> <https://web.dev/cls/>. This jank has been associated with negative
>> effects to online business' engagement and conversion rates. Furthermore,
>> delayed loads of analytics and ads payloads can result in missed ads
>> impressions and dropped analytics hits.
>>
>> Initial public proposal
>>
>> This experiment sends a list to Chrome of 100 <URL, hash> pairs whose
>> payloads are considered pervasive (the "pervasive payloads list"). During
>> the three-week experiment period, if Chrome fetches a payload that matches
>> both the URL and its hash on the pervasive payloads list, it is inserted
>> into a local single-keyed cache. This payload is then available for use by
>> Chrome when loading pages on other sites that include the matching URL. All
>> other fetches for URLs not on the pervasive payloads list are cached
>> according to the existing split HTTP cache.
>>
>> The hash covers the payload body and most response headers, except for
>> those which change on every response.
>>
>> To ensure we do not degrade the privacy profile of any users during this
>> experiment, only users with third-party cookies currently enabled will be
>> eligible for the experiment. We will compare the experience of users in
>> experiment and control arms according to total bytes loaded and page
>> performance metrics like the Core Web Vitals <https://web.dev/vitals>.
>>
>> The pervasive payloads list was produced by crawling the web and
>> aggregating the most commonly referenced third-party resource URLs included
>> in HTML content. We then used pseudonymous URL-keyed metrics from Chrome to
>> estimate the traffic to sites and the number of impressions of third-party
>> resources. Individually identifiable browsing or search histories were not
>> used in the creation of the pervasive payload list (for more information
>> about Chrome's data collection policies and privacy policies, see
>> google.com/chrome/privacy). The resulting list was further filtered for
>> any URLs that might contain PII (e.g. URLs with extensive or opaque query
>> parameters). The list was also manually reviewed to ensure it included only
>> payloads reasonably expected to be pervasive; the manual review did not
>> result in any payloads being removed.
>>
>> The privacy properties of the split HTTP cache are considered essential
>> to users and this proposal intends to maintain those properties,
>> specifically by maintaining split HTTP caching for all payloads not on the
>> pervasive payloads list.
>>
>> API semantics are unchanged. User-facing functionality is unchanged
>> (though we expect performance to be slightly improved).
>>
>> The list of the top 100 Pervasive URLs for use in this experiment is
>> pending internal reviews and will be shared on this thread upon approval.
>> Future directions
>>
>> This experiment is the first step in a path exploring improved handling
>> of pervasive payloads in the browser cache. We outline the intended future
>> functionality here to clarify the intentions behind the current experiment.
>> The overview below is not complete or final and subsequent parts of the
>> design and implementation will be presented and discussed in further
>> Intents to Experiment and Prototype.
>>
>> At a high level, a future improvement to the handling of pervasive
>> payloads may involve:
>>
>>
>>    -
>>
>>    Assembling a list of pervasive payloads that meets the following
>>    criteria:
>>    -
>>
>>       Maintains the privacy of user browsing histories in its creation
>>       -
>>
>>       Fairly represents pervasive payloads as they have been chosen by
>>       developers on the web, not payloads selected or favored by any 
>> particular
>>       library or browser vendor.
>>       -
>>
>>          This experiment will initially use a static list of predefined
>>          URLs assembled as described in the 'Initial public proposal' 
>> section above
>>          -
>>
>>          A future implementation will likely dynamically update the
>>          payloads list on, for example, a weekly cadence.
>>          -
>>
>>    Implementing shared caching for pervasive payloads that meets the
>>    following criteria:
>>    -
>>
>>       Materially improves load times and responsiveness for web users
>>       (under study in this experiment)
>>       -
>>
>>       Does not create a new tracking vector based on cache timing attacks
>>       -
>>
>>       Does not require users to fetch payloads before the browser knows
>>       they will need it (i.e. we don't plan to bundle payloads with browser
>>       installs or updates)
>>       -
>>
>>       Does not increase local storage required by browser installs or
>>       caches
>>
>>
>> To privately and fairly assemble the list of pervasive payloads, we are
>> exploring the use of Private Heavy Hitters
>> <https://www.tensorflow.org/federated/tutorials/private_heavy_hitters>.
>> To implement a privacy-preserving shared cache after the deprecation of
>> third-party cookies, we are exploring adding a measure of randomness to the
>> observed presence or absence of a pervasive payload in the shared cache.
>>
>> However, this work is only worthwhile if it results in materially
>> improved load times for real users. This Intent to Experiment covers only
>> whether or not we should attempt to measure the performance gains that
>> might be realized if pervasive payloads were placed in a shared cache,
>> as one data point among others that will contribute to discussions about
>> future steps for the proposal.
>>
>> TAG review
>>
>> None yet.
>>
>> TAG review status
>>
>> N/A
>>
>> Risks
>> Interoperability and Compatibility
>>
>> Chrome's compliance with the relevant standards is unchanged. Caching
>> behavior differs between browsers so interoperability will not be affected.
>>
>> The list of popular payloads is specifically chosen to minimize
>> compatibility risks.
>>
>>
>> Gecko: No signal
>>
>> WebKit: No signal
>>
>> Web developers: No signals
>>
>> Other signals:
>>
>> WebView application risks
>>
>> Does this intent deprecate or change behavior of existing APIs, such that
>> it has potentially high risk for Android WebView-based applications? No
>>
>>
>> Debuggability
>>
>> There is no developer-exposed API for this feature, so most DevTools
>> support is not relevant. It would be useful to indicate whether a resource
>> was served from the single-keyed cache in the network tab, however this
>> will not be implemented in the initial experiment.
>>
>> Security and privacy
>>
>> Single-keyed caching introduces global state shared between different
>> browsing contexts. A shared cache can introduce information leaks based on
>> cache probing (https://xsleaks.dev/docs/attacks/cache-probing/),
>> including XS-Search (https://xsleaks.dev/docs/attacks/xs-search/) in
>> applications which conditionally load a single-keyed-cache eligible
>> resource based on authenticated user state. The state of the cache, queried
>> across different contexts, could also be used as a fingerprint, permitting
>> user tracking; however, in this case, we believe this does not provide
>> tracking capabilities beyond those of third-party cookies.
>>
>> To protect users during this experiment, we limit the experiment
>> population to those users with third-party cookies enabled. Recognizing
>> that third-party cookies will eventually be switched off for most users
>> <https://privacysandbox.com/>, we are developing protections such as
>> slightly randomizing cache hit/miss checks, disallowing eviction, or
>> guaranteeing attempts to read from the cache reliably populate that cache
>> entry. These protections will be proposed and incorporated before any
>> future optimizations are launched.
>>
>> For the purposes of the current experiment, we will be using the same
>> implementation of single-keyed caching that Chrome used before the HTTP
>> cache was partitioned in M77 (
>> https://chromestatus.com/feature/5730772021411840).
>>
>> To summarize, the security and privacy restrictions on this experiment
>> are as follows:
>>
>>
>>    1.
>>
>>    We will exclude users that have third-party cookies disabled.
>>    2.
>>
>>    Only a small percentage of users will be included in the experiment,
>>    reducing the likelihood and impact of any attacks abusing the single-keyed
>>    cache.
>>    3.
>>
>>    We will strictly limit the duration of the experiment on each channel
>>    to 3 weeks.
>>    4.
>>
>>    We will only serve pervasive resources from the single-keyed cache.
>>    5.
>>
>>    We can turn off the experiment immediately (independent of browser
>>    updates) if any other threats appear.
>>
>>
>> Is this feature fully tested by web-platform-tests
>> <https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md>
>> ?
>>
>> This behavior is specific to Chrome and not part of any standard, so it
>> will not be tested in web platform tests.
>>
>> Flag name
>>
>> CacheTransparency
>>
>> Requires code in //chrome?
>>
>> No, but the list of popular payloads and the mechanism for distributing
>> it to the browser will be Chrome-specific.
>>
>> Tracking bug
>>
>> https://bugs.chromium.org/p/chromium/issues/detail?id=1309002
>>
>> Launch bug
>>
>> https://bugs.chromium.org/p/chromium/issues/detail?id=1309353
>>
>> Estimated milestones
>>
>> M103 for off-by-default experiment
>>
>> Link to entry on the Chrome Platform Status
>>
>> https://chromestatus.com/feature/5768521127559168
>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "blink-dev" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to blink-dev+unsubscr...@chromium.org.
>> To view this discussion on the web visit
>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAA5e6990s-e4aYUnYK5%2BqzQpAyFzJa42y%2B%3D_MAnL19z%3DqemnWg%40mail.gmail.com
>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAA5e6990s-e4aYUnYK5%2BqzQpAyFzJa42y%2B%3D_MAnL19z%3DqemnWg%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAC_ixdxOWMezzpzGQayKanKuGUe1tfEpBqwLNuq%3DOpuJRwV%2BMQ%40mail.gmail.com.

Reply via email to