On Mon, Sep 11, 2023 at 8:46 AM 'Fergal Daly' via blink-dev <
blink-dev@chromium.org> wrote:

>
>
> On Fri, 8 Sept 2023 at 02:21, Vladimir Levin <vmp...@chromium.org> wrote:
>
>> This is potentially a naive question, since I'm not familiar with all of
>> the CC headers, but how would the following situation work (or rather how
>> is this meant to work?):
>>
>> I have an "overview" page that lists some items that come from a
>> database. This page has an input box with a button to add a new item. The
>> way the button works is it POSTs to the same page to add an entry into some
>> database, and then redirects to a new "details" page. The "overview" page
>> also currently sends CCNS, so that when the user clicks back from the
>> "details" page, they see an updated list which was re-fetched from the
>> server. Without CCNS, going back hits BFCache and the list is not up to
>> date.
>>
>
> That seems correct and is a problem with BFCache in general. E.g. you hit
> back and your shopping cart has the wrong number of items.
>
>
>> Is there a simple solution to this if CCNS doesn't prevent BFCache?
>>
>
> The one-size-fits-all solutions is something like
>
> addEventListener("pageshow", e => {
>     if (e.persisted) {
>         document.body.innerHTML = "";
>         location.reload();
>     }
> })
>

> Which is not great for users but also not terrible, the time to load will
> be increased by the duration of a BFCache restore which is mostly < 100ms
> and much less on a fast device.
>


I suspect that this will defeat things like paint holding. That is, the
behavior of non-bfcache load is to typically to show the painted output of
the last page while the navigation commits and shows a frame of the new
page (within timeout limit). With this script, this will quickly show a
blank page (at the speed of BFCache restore + one frame), and then begin
the reload().

So although I agree with your timing estimates, I think the behavior would
look substantially worse than just a 100ms delay.


>
> The better UX would be to have a `pageshow` handler that refreshes just
> the data that needs refreshing. The difficulty of doing that is heavily
> dependent on the site design,
>

That's a fair point. This seems non-trivial though :)



>
> F
>
>
>> This is a toy example:
>> https://rocky-merciful-creek.glitch.me/nostore/one.html?nostore=1
>> if you click the link and go back, the number changes. If query nostore=0
>> then it doesn't. The query parameter just controls whether CCNS is sent
>>
>> Thanks!
>> vmpstr
>>
>>
>>
>> On Thu, Sep 7, 2023 at 5:40 AM 'Mingyu Lei' via blink-dev <
>> blink-dev@chromium.org> wrote:
>>
>>> (Not to answer how the 3 minutes was originally decided, but just to
>>> share a bit of the context.)
>>>
>>> The default BFCache timeout was set to 3 minutes on Chrome for a long
>>> time. Only after Sep 2022, it was increased to 10 minutes after evaluating
>>> the hit rate improvement and other impacts (https://crbug.com/1305878).
>>> For CCNS pages, we will follow the old timeout of 3 minutes, or in other
>>> words, the changes that increase BFCache timeout from last year won't be
>>> applied to CCNS pages.
>>>
>>>
>>> On Thu, Sep 7, 2023 at 12:21 AM Daniel Bratell <bratel...@gmail.com>
>>> wrote:
>>>
>>>> Thanks for your answers. I think we are on the same page since I too
>>>> consider this to be of high value to users. The difference in perceived
>>>> performance is so large that I understand that it is worth adding some
>>>> magic for.
>>>>
>>>> On the other hand, as you also know, there is a risk and I want to be
>>>> sure that it is fully understood. You have mentioned a shorter timeout a
>>>> couple of times, and the explainer says it will be 3 minutes instead of the
>>>> default 10 minute cache timeout. I'm well aware of sites that time out
>>>> authentications server side after a couple of minutes of inactivity and I
>>>> guess 3 would be in the same ball park. Did you pick that particular number
>>>> for any particular reason. Is it the lowest number that still gives any
>>>> benefits?
>>>>
>>>> /Daniel
>>>> On 2023-09-01 10:05, 'Fergal Daly' via blink-dev wrote:
>>>>
>>>> Sorry for the slow reply, I've had to focus on some other things in the
>>>> last month. The reply below covers a few overlapping topics that were
>>>> brought up in this thread by Yoav Weiss and Daniel Bratell.
>>>>
>>>>
>>>> On Sat, 29 Jul 2023 at 03:03, Mike Taylor <miketa...@chromium.org>
>>>> wrote:
>>>>
>>>>> 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"...
>>>>>
>>>>>
>>>> We would prefer not to do this and other browsers are in agreement
>>>> <https://github.com/whatwg/html/issues/5744>. If we give any kind of
>>>> simple header that prevents BFCaching, it will become the wide-spread
>>>> stack-exchange-documented way to opt out of BFCache. Any site that truly
>>>> cannot tolerate its data entering BFCache and doesn't already fall under
>>>> one of our conditions for avoiding BFCache, can erase content in a
>>>> `pagehide` handler as they enter BFCache and reload it in a `pageload`
>>>> handler if restored. This is pretty simple to do for anyone who truly 
>>>> needs it
>>>> (worst case they trigger a reload from JS when leaving BFCache,
>>>> obviously not a good user experience but we have to weight that against
>>>> block BFCache for many users) but it still provides a little bit of a
>>>> barrier, so hopefully people think twice and instead correctly support
>>>> BFCache rather than casually opting out,
>>>>
>>>> F
>>>>
>>>>  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%
>>>>>    - *No cookie modification: 6.70%*
>>>>>       - With non-HttpOnly cookie modifications only: 1.38%
>>>>>       - With HttpOnly or non-HttpOnly cookie modifications: 0.55%
>>>>>    - With RPC containing CCNS response header: 10.13%
>>>>>    - No cookie modification: 1.01%
>>>>>       - With non-HttpOnly cookie modifications only: 7.86%
>>>>>       - 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 <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/CAAozHL%3D0vS96LyxmMgf7C7U93FudaP6k7OLX0MKq5jdW5fNZzA%40mail.gmail.com
>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAAozHL%3D0vS96LyxmMgf7C7U93FudaP6k7OLX0MKq5jdW5fNZzA%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/CAN_fHtmo4p9pYZ3HNGqped8MCBfTWXuNd_VC%3DoV4PHEVi73W%3DA%40mail.gmail.com
>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAN_fHtmo4p9pYZ3HNGqped8MCBfTWXuNd_VC%3DoV4PHEVi73W%3DA%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/CAAozHLmW2XCFC1d61x1r%2B1c8z_PqoukKOs0EDgDct9cPvRc4eQ%40mail.gmail.com
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAAozHLmW2XCFC1d61x1r%2B1c8z_PqoukKOs0EDgDct9cPvRc4eQ%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/CADsXd2O%3DgcdgvJdsCJmP6oG6qf4k0hXM4UePqzGH1ZfQZDMEZg%40mail.gmail.com.

Reply via email to