我是服务人员的新手,我正在使用 Workbox 预缓存我的应用程序外壳并缓存我的 api 数据。
资产的预缓存工作正常,缓存正在创建和填充。
在我第二次重新加载页面之前,运行时缓存不会创建缓存并填充它。
我认为这可能是时间问题,所以我在 javascript 中设置了数据的页面重新加载,但这仍然没有缓存调用。
我没有做任何特定于创建缓存的事情,应用程序代码是:
...
app.getData = function() {
var requestHeaders = new Headers({
Accept: "application/json"
});
fetch(app.dataUrl, { headers: requestHeaders })
.then(function(response) {
return response.json();
})
.then(function(json) {
app.updateCards(json);
})
.catch(function(error) {
console.log('There has been a problem with your fetch operation: ' + error.message);
});
}
...
if ('serviceWorker' in navigator) {
navigator.serviceWorker
.register('/my_sw.js')
.then(function() {
console.log('Service Worker Registered');
});
}
app.getData(); # fetch api data
然后在服务人员中:
...
const workboxSW = new self.WorkboxSW({clientsClaim: true});
// register data url to cache
workboxSW.router.registerRoute(
'/my_api/data',
workboxSW.strategies.staleWhileRevalidate()
);
// pre-cache assets
workboxSW.precache(fileManifest);
我正在使用 Chrome 开发工具来检查 sw 状态和创建的缓存。对数据 URL 的网络调用如下:
对于我做错了什么或如何调试它的任何建议,我将不胜感激。
提前感谢
丹