Background Fetch should probably have global and/or per-origin/SW limits on number of parallel requests (currently the only limit is one active request per fetch).
These limits may additionally need to be dynamic, depending on how overloaded the network/download service are.
Trade-offs to consider include fairness, battery consumption (e.g. batching can be helpful for this), contention with other network requests like page loads or user-initiated downloads that are likely more urgent, and latency of background fetch completion.
It might be that we want to download/upload many requests in parallel when the network is underutilized (and cheap), but aggressively pause them when the user starts loading pages or using other apps.
If websites start streaming data using background fetch for foreground use cases (e.g. displaying a video whilst it downloads, such that the video keeps on downloading if the user switches away from the tab), then things might get more complicated as it may no longer make sense to treat background fetch as lower priority.
Comment 1 by joh...@chromium.org
, Sep 15 2017