If it's a feature flag, please put milestones in the the appropriate dev
trial milestone fields.

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


On Sun, May 1, 2022 at 5:56 PM Daisuke Enomoto <denom...@chromium.org>
wrote:

> Hi Joe,
>
> CacheTransparancy is the feature name we use for the feature flag. As Adam
> mentioned, the feature is off by default. Yes, we use Finch to determine
> the control/experiment group on each channel (50% on canary & dev, 10% on
> beta, 1% on stable).
>
> On Thu, Apr 28, 2022 at 11:46 PM Joe Medley <jmed...@google.com> wrote:
>
>> What is that?
>>
>> I'm trying to understand what this is because I need or may need to
>> explain it in writing to the external world in a few weeks. I've never
>> heard of a CacheTransparancy flag.
>> Joe Medley | Technical Writer, Chrome DevRel | jmed...@google.com |
>> 816-678-7195 <(816)%20678-7195>
>> *If an API's not documented it doesn't exist.*
>>
>>
>> On Thu, Apr 28, 2022 at 1:26 AM Adam Rice <ri...@chromium.org> wrote:
>>
>>> Finch flag?
>>>
>>>
>>> CacheTransparency (but the code is not landed yet).
>>>
>>> On Thu, 28 Apr 2022 at 03:07, Joe Medley <jmed...@google.com> wrote:
>>>
>>>> Finch flag?
>>>> Joe Medley | Technical Writer, Chrome DevRel | jmed...@google.com |
>>>> 816-678-7195 <(816)%20678-7195>
>>>> *If an API's not documented it doesn't exist.*
>>>>
>>>>
>>>> On Wed, Apr 27, 2022 at 2:30 AM Adam Rice <ri...@chromium.org> wrote:
>>>>
>>>>> 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 <(816)%20678-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/CAJUhtG_EOobCVU3VD-Un%2BJCWjgv85SFiX5HbFA3w35kpxFaWyA%40mail.gmail.com.

Reply via email to