Thanks for the additional analysis. Another question I have, if a site sends:

|"Cache-Control: no-cache, no-store, must-revalidate" (copypasta from https://stackoverflow.com/a/2068407), would it be treated differently as "Cache-Control: no-store"? I'm trying to think of signals that might be useful as heuristics for "no seriously don't ever cache this"... |

On 7/27/23 9:04 AM, Mingyu Lei wrote:
Hi Mike,

Following our previous response, we would like to share the usage data that we have collected from the beta channel. 18.76% of history navigations are not restored from BFCache because of the CCNS header only. The following are the breakdowns:

  * No RPC containing CCNS response header: 8.63%
      o *No cookie modification: 6.70%*
      o With non-HttpOnly cookie modifications only: 1.38%
      o With HttpOnly or non-HttpOnly cookie modifications: 0.55%
  * With RPC containing CCNS response header: 10.13%
      o No cookie modification: 1.01%
      o With non-HttpOnly cookie modifications only: 7.86%
      o With HttpOnly or non-HttpOnly cookie modifications: 1.26%

Based on these figures, we will update the proposal to evict the BFCache entry with any cookie modification for the current phase. This should give us 6.70% improvement in cache hit rate.

We could continue the HttpOnly cookie discussion in the future.

On Sat, Jul 22, 2023 at 12:46 AM Mingyu Lei <le...@google.com> wrote:

    Hi Mike,

    Thanks for the comments. We have discussed the concerns you raised
    before and please find the replies below.

        
https://github.com/fergald/explainer-bfcache-ccns/blob/main/README.md#secure-cookies
        references "HTTPS-only" cookies, as well as "secure" vs
        "insecure" cookies. By "HTTPS-only", do you mean a cookie that
        sets the "secure" attribute (including "__Secure-" prefixes),
        _and_ sets "HttpOnly"? Or something else?

        Later in
        
https://github.com/fergald/explainer-bfcache-ccns/blob/main/README.md#allow-ccns-documents-to-be-bfcached-without-the-api,
        the proposal is that CCNS pages are safe to bfcache if no
        "HTTP-only" cookies have changed. Are these cookies setting
        only the "HttpOnly" attribute, or is this intended to say
        "HTTPS-only" as above?


    The short answer is that we will only monitor HttpOnly cookies,
    regardless of whether they are secure or not. The terms in the
    explainer were unclear, and we will fix them.

        I see that
        
https://github.com/w3ctag/design-reviews/issues/786#issuecomment-1515742477
        references this work. Did we learn anything from
        experimentation in the wild (not sure if y'all ran an experiment)?

        I'm curious if y'all have looked at stats on the uptake of
        secure/httponly cookies vs "non-secure" cookies being set by
        pages returned from RPCs sent with an Authorization header
        (though I wouldn't be surprised if we don't have UMA for
        that... perhaps just globally would be useful to consider).


    We are currently conducting a Finch experiment to collect the hit
    rate on beta, and the data will be available next week. We will
    share it with you again after we have the data.

    With that data, we will be able to tell the percentage of page
    loads that observe HttpOnly cookie changes, any cookie changes, or
    no cookie changes. There will also be another dimension about
    whether the page had sent out RPC with CCNS response. There is no
    pre-existing UMA for this, but we have recorded the reasons why
    BFCache is not restored.

        My only concern (which may not be grounded in reality) would
        be for sites not following best practices...


    We expect that there will be cases where pages are restored
    inappropriately where sites are not following good practice. We
    don't have an idea of the size of this problem. We will have data
    from the beta channel soon that will tell us what the difference
    would be in terms of BFCache hit-rate between _monitoring all
    cookies_ and _only monitoring HttpOnly cookies_. Our thought
    process looks like this:

    If _monitoring all cookies_ already gives us large hit-rate
    improvement, *or* the difference between _monitoring all
    cookies_ and _only monitoring HttpOnly cookies_ is small, then we
    are happy to just be conservative and go with _monitoring all
    cookies_. Otherwise*, we would like to discuss this further.


    /* "Otherwise" means _monitoring all cookies_ will only give us
    negligible cache hit-rate improvement, *and* _monitoring HttpOnly
    cookies_ will give us a much larger increase./

    Thanks,
    Mingyu

    On Wed, Jul 12, 2023 at 12:11 AM Mike Taylor
    <miketa...@chromium.org> wrote:

        On 7/11/23 2:19 AM, 'Fergal Daly' via blink-dev wrote:

        [BCC chrome-bfca...@google.com]

        On Tue, 11 Jul 2023 at 15:16, Mingyu Lei <le...@google.com>
        wrote:

            +chrome-bfcache <mailto:chrome-bfca...@google.com>

            On Tue, Jul 11, 2023 at 1:08 PM Mingyu Lei
            <le...@google.com> wrote:


                        Contact emails

                kenjibah...@chromium.org, fer...@chromium.org,
                denom...@chromium.org, le...@chromium.org


                        Specification

                
https://github.com/fergald/explainer-bfcache-ccns/blob/main/README.md


                        Design docs

                
https://docs.google.com/document/d/1qX1w6L6laTzpFTh78dvT7wwC1060Z3he2Azp4BAwsUE/edit?usp=sharing
                
https://github.com/fergald/explainer-bfcache-ccns/blob/main/README.md

        This is a really well-written explainer, thank you!

        One point of clarification:

        
https://github.com/fergald/explainer-bfcache-ccns/blob/main/README.md#secure-cookies
        references "HTTPS-only" cookies, as well as "secure" vs
        "insecure" cookies. By "HTTPS-only", do you mean a cookie that
        sets the "secure" attribute (including "__Secure-" prefixes),
        _and_ sets "HttpOnly"? Or something else?

        Later in
        
https://github.com/fergald/explainer-bfcache-ccns/blob/main/README.md#allow-ccns-documents-to-be-bfcached-without-the-api,
        the proposal is that CCNS pages are safe to bfcache if no
        "HTTP-only" cookies have changed. Are these cookies setting
        only the "HttpOnly" attribute, or is this intended to say
        "HTTPS-only" as above?


                        Summary

                A behavior change to safely store (and restore) pages
                in the Back/Forward Cache despite the presence of a
                "Cache-control: no-store" HTTP header on HTTPS pages.
                This would allow pages to enter BFCache and be
                restored as long as there are no changes to cookies
                or to RPCs using the `Authorization:` header.



                        Blink component

                UI>Browser>Navigation>BFCache
                
<https://bugs.chromium.org/p/chromium/issues/list?q=component:UI%3EBrowser%3ENavigation%3EBFCache>


                        Search tags

                bfcache <https://chromestatus.com/features#tags:bfcache>


                        TAG review

        I see that
        
https://github.com/w3ctag/design-reviews/issues/786#issuecomment-1515742477
        references this work. Did we learn anything from
        experimentation in the wild (not sure if y'all ran an experiment)?



                        TAG review status

                Not applicable


                        Risks



                        Interoperability and Compatibility

        I'm curious if y'all have looked at stats on the uptake of
        secure/httponly cookies vs "non-secure" cookies being set by
        pages returned from RPCs sent with an Authorization header
        (though I wouldn't be surprised if we don't have UMA for
        that... perhaps just globally would be useful to consider).

        My only concern (which may not be grounded in reality) would
        be for sites not following best practices...



                /Gecko/: No signal

                /WebKit/: No signal

        Can we request signals?


                /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?

                None



                        Debuggability



                        Will this feature be supported on all six
                        Blink platforms (Windows, Mac, Linux, Chrome
                        OS, Android, and Android WebView)?

                No

                BFCache is not supported on WebView, so this change
                has no impact there.



                        Is this feature fully tested by
                        web-platform-tests
                        
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?

                No


                        Flag name on chrome://flags



                        Finch feature name

                CacheControlNoStoreEnterBackForwardCache


                        Requires code in //chrome?

                False


                        Tracking bug

                https://bugs.chromium.org/p/chromium/issues/detail?id=1228611


                        Launch bug

                https://launch.corp.google.com/launch/4251651


                        Estimated milestones

                DevTrial on desktop     116

                DevTrial on Android     116



                        Anticipated spec changes

                Open questions about a feature may be a source of
                future web compat or interop issues. Please list open
                issues (e.g. links to known github issues in the
                project for the feature specification) whose
                resolution may introduce web compat/interop risk
                (e.g., changing to naming or structure of the API in
                a non-backward-compatible way).

                None


                        Link to entry on the Chrome Platform Status

                https://chromestatus.com/feature/6705326844805120


                        Links to previous Intent discussions



                This intent message was generated by Chrome Platform
                Status <https://chromestatus.com/>.

-- 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/CAAozHLkbL7vmubNOsrA2PKngz4xeV%3DXyuLN73oS4XBea50Xe9A%40mail.gmail.com
        
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAAozHLkbL7vmubNOsrA2PKngz4xeV%3DXyuLN73oS4XBea50Xe9A%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/561ff7c5-45aa-0c9e-8157-924199f82fb4%40chromium.org.

Reply via email to