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 来响应各种生命周期事件,例如 requestWillFetch
、fetchDidFail
和 fetchDidSucceed
。
我正在尝试全神贯注于 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 来响应各种生命周期事件,例如 requestWillFetch
、fetchDidFail
和 fetchDidSucceed
。