On Tue, Mar 7, 2023 at 1:03 AM 'Yoshisato Yanagisawa' via blink-dev <
blink-dev@chromium.org> wrote:

> Contact emails
>
> yyanagis...@google.com
>
> Explainer
>
>
> https://github.com/yoshisatoyanagisawa/service-worker-skip-no-op-fetch-handler
>
> Specification
>
> https://github.com/w3c/ServiceWorker/pull/1672
>
> Summary
>
> The feature makes the navigation of pages with no-op service worker fetch
> handlers fast by skipping them.
>
> Some sites have a no-op (no operation) fetch listener (e.g. onfetch = ()
> => {}).  Since having the fetch listener was one of the requirements to be
> a progressive web app (PWA), we assume they did that to make their site
> recognized as PWA.  However, it only brings overheads to start a service
> worker and execute a no-op listener without bringing any feature benefits
> like caching or offline capabilities because the code does nothing.  To
> make the navigation to such pages faster, we would like to omit the service
> worker start and the listener dispatch from the navigation critical path if
> a user agent identifies that all the service worker's fetch listeners are
> no-ops.
>
> From version 112, Chromium starts to show console warnings if all the
> service worker’s fetch listeners are no-ops, and encourages developers to
> remove the useless fetch listeners.  Hopefully sites stop using the useless
> fetch listeners and we can deprecate the feature in the future.
>
> Blink component
>
> Blink>ServiceWorker
> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EServiceWorker>
>
> TAG review
>
> https://github.com/w3ctag/design-reviews/issues/815
>
> TAG review status
>
> Issues addressed
>
> Risks
>
> Interoperability and Compatibility
>
> We believe the change has very small compatibility risk.
>
> Updating the no-op fetch handler in a service worker is ignored, which was
> not allowed to ignore before.  Upon our observation, this happens to a
> negligible amount (
> https://chromestatus.com/metrics/feature/timeline/popularity/4453).
>

It seems like we don't yet have data from this.
Can you explain this counter a bit more? Doesn't it also count cases where
an operational fetch handler is updated after initialization?



>
> https://github.com/yoshisatoyanagisawa/service-worker-skip-no-op-fetch-handler/#approaches-to-deal-with-the-handler-updates-after-the-initialization
>
> Navigation Preload is ignored for the no-op fetch handler.  The spec
> requires the same resource fetched twice for no-op fetch handler due to
> lack of respondWith, which could result in two different network requests
> in rare situation, but this behavior only happens when they are
> misconfigured (a page was set up to send a Navigation Preload request they
> do not use).
>
>
> https://github.com/yoshisatoyanagisawa/service-worker-skip-no-op-fetch-handler/#how-does-it-work-with-navigation-preload
>
> Gecko: No signal (
> https://github.com/mozilla/standards-positions/issues/744)
>
> WebKit: No signal (
> https://github.com/WebKit/standards-positions/issues/129)
>
> Web developers: No signals. When you search with the query "A2HS", you
> will find many sites recommending you to add a no-op fetch handler (e.g.
> addEventListener("fetch", ()=>{})).  Thus, you can easily assume that
> people who want to make their site to be added to the home screen would
> just add the no-op fetch handler for that purpose.  Therefore, having the
> no-op fetch handler is common among sites (upon our investigation on
> popular site fetch handler usage, 3-5% of them were affected). Such sites
> will benefit from shipping this performance improvement, but we do not have
> specific examples of sites supporting this Intent.  (Probably, if they were
> aware of the problem, they would just remove the empty fetch handler.)
>
> 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?
>
> There are no special risks for WebView-based applications.
>
>
> Debuggability
>
> If a service worker is affected, its "Fetch handler type" field in
> chrome://serviceworker-internals/ will be EMPTY_FETCH_HANDLER.  From
> version 112, there will be a console warning saying "Fetch event handler is
> recognized as no-op. No-op fetch handler may bring overhead during
> navigation. Consider removing the handler if possible." if the service
> worker is affected.
>
> Will this feature be supported on all six Blink platforms (Windows, Mac,
> Linux, Chrome OS, Android, and Android WebView)?
>
> Yes
>
> Is this feature fully tested by web-platform-tests
> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
> ?
>
> No.  The specification proposal adds this as an optional behavior, so
> testing it with web platform tests is not very useful. (Note that no
> existing web platform tests needed to be updated to allow this behavior,
> since the observable changes are only visible in edge cases.)
>
> Flag name
>
> #skip-service-worker-fetch-handler
>
> Requires code in //chrome?
>
> False
>
> Tracking bug
>
> https://bugs.chromium.org/p/chromium/issues/detail?id=1347319
>
> Estimated milestones
>
> DevTrial on desktop
>
> 111
>
> DevTrial on Android
>
> 111
>
>
> 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).
>
> https://github.com/w3c/ServiceWorker/pull/1672 is mostly finished, but
> still undergoing final review by the spec mentor.
>
> Link to entry on the Chrome Platform Status
>
> https://chromestatus.com/feature/5136946693668864
>
> This intent message was generated by Chrome Platform Status
> <https://chromestatus.com/>, and modified by hand.
>
>
> --
> 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/CAPNB-6VZntByJg-K_GNFb4xENkOEsmR8GewsKNJFyWbqnsWAHw%40mail.gmail.com
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPNB-6VZntByJg-K_GNFb4xENkOEsmR8GewsKNJFyWbqnsWAHw%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/CAL5BFfX9bvUL1wJtyGfjfrTyamwG-xLKHWBj3fsYeZc89NXKQw%40mail.gmail.com.

Reply via email to