progressive-web-apps - Workbox StaleWhileRevalidate 和离线回退
问题描述
是否可以使用 Workbox 返回 StaleWhileRevalidate 策略的离线回退?
const urlHandler = new StaleWhileRevalidate({
cacheName: 'routes',
plugins,
});
registerRoute(
({ request }) => request.mode === 'navigate',
({ event }) =>
urlHandler.handle({ event }).catch(() => caches.match(FALLBACK_HTML_URL)),
);
此代码仅在请求在缓存中时才有效..但对于未缓存的新 URL(但具有网络),它直接显示离线后备:/
有人已经测试过这个用例吗?
解决方案
在 Workbox v6+ 中,最简洁的方法是使用handlerDidError
插件:
import {registerRoute} from 'workbox-routing';
import {StaleWhileRevalidate} from 'workbox-strategies';
registerRoute(
({request}) => request.mode === 'navigate',
new StaleWhileRevalidate({
cacheName: 'routes',
plugins: [
{handlerDidError: () => caches.match(FALLBACK_HTML_URL)},
// Add any other plugins here.
],
})
);
推荐阅读
- php - 使用php在关联数组的数组中搜索值
- java - 如何使用 Tumblr API 获取用户的 Tumblr 仪表板?
- python - 如何检查套接字连接是否正常工作和缓冲或请求是否不正确?
- python-3.x - 如何在 Hacker Rank 中导入 NLTK 库
- python - python pandas使用for后如何组合切片
- node.js - 如何格式化和验证电子邮件节点 js
- scala - 使用 jdbc 从 Spark 2.3.1 Scala 2.11.8 连接到 Vertica
- php - 如何从 guzzle 获取 json 响应
- profiling - ServiceStack:如何在自托管中启用和查看内置分析器?
- python - 值大于或小于零的列的 Pandas 条件平均值