Workbox NetworkOnly 策略的用例是什么

What's the use case for Workbox NetworkOnly strategy

我正在尝试全神贯注于 Service Worker 和 WorkBox。

Workbox 提供了多种策略来处理离线加载数据。除了 NetworkOnly 策略外,一切都 crystal 清楚。 问题很简单。

为什么首先需要使用这个 NetworkOnly 策略?

如果它所做的只是访问网络并且在我们离线时失败,那么我在没有路由器和根本没有策略的情况下得到同样的效果。如果我没有为某些 URL 注册路由器并尝试从应用程序访问它,我会得到完全相同的结果,它只会失败。

当我可能想使用此策略时,有人可以提出一个或多或少现实的用例吗?

这可能是 least-used 策略,但在某些情况下它会派上用场。

当使用 setDefaultHandler() 指定策略(例如,StaleWhileRevalidate)以在没有匹配路由时使用,您可能希望明确创建匹配某些条件的路由并应用 NetworkFirst策略:

import {NetworkOnly, StaleWhileRevalidate} from 'workbox-routing';
import {registerRoute, setDefaultHandler} from 'workbox-routing';

// Ensure that requests that include /api/ go against the network.
registerRoute(
  ({url}) => url.pathname.includes('/api'),
  new NetworkOnly()
);

setDefaultHandler(new StaleWhileRevalidate());

此外,使用 NetworkOnly 允许您应用 Workbox plugins 来响应各种生命周期事件,例如 requestWillFetchfetchDidFailfetchDidSucceed