我正在使用React Service Worker脱机插件为网站创建一个具有持久缓存的Service Worker。
我想告诉用户什么时候cach中存储了新版本,并建议刷新页面,但我不知道如何引用服务工作以及应该听什么事件(服务工作由npm“离线插件”自动创建)。
今天的标准流量:
新流量应为:
您应该查看以下链接:服务人员生命周期-更新
您还可以通过运行以下操作手动更新service worker:
navigator.serviceWorker.register('/sw.js').then((reg) => {
// sometime later…
reg.update();
});
您可以在服务人员的install
事件中判断新版本已准备就绪(但尚未激活)
您知道服务人员的activate
事件的处理程序中加载了新版本。
服务工作者是webworker的一种特殊形式
注册软件时,例如在serviceWorkerRegistry中。js,您可以访问多个事件<例如。
serviceWorkerRegistry.js:
if (!navigator.serviceWorker) return;
navigator.serviceWorker.register('/sw.js').then(function(reg) {
if (!navigator.serviceWorker.controller) {
return;
}
if (reg.waiting) {
console.log("inside reg.waiting");
return;
}
if (reg.installing) {
console.log("inside reg.installing");
return;
}
reg.addEventListener('updatefound', function() {
console.log("inside updatefound");
let worker = reg.installing;
worker.addEventListener('statechange', function() {
if (worker.state == 'installed') {
console.log('Is installed');
// Here you can notify the user, that a new version exist.
// Show a toast view, asking the user to upgrade.
// The user accepts.
// Send a message to the sw, to skip wating.
worker.postMessage({action: 'skipWaiting'});
}
});
});
});
sw.js:
// You need to listen for a messages
self.addEventListener('message', function(event) {
if (event.data.action === 'skipWaiting') {
self.skipWaiting();
}
});
现在离线插件的问题是,它为您创建了sw,这样就很难理解sw在做什么。
我会说,最好创建自己的sw,这样你可以更好地理解功能。这插件可以帮助你缓存。
我正在使用react Redux实现两种不同类型用户登录。这是我的登录方法: 对于第一种类型的用户,我从后端返回:令牌、电子邮件、id、姓氏。 对于第二种类型的用户,我从后端返回:token、email、id、type。 我做了一些第二类用户无法访问的安全路由。因此,如果返回变量,我将为该用户定义特定的路由。 如果返回变量,它将正确显示链接和redux存储中的所有内容。但是,如果我重新加载页面,那
我已经实现了Workbox,以使用webpack生成我的服务人员。这非常有效-我可以确认,在运行(package.json:)时,已在生成的服务工作人员中更新了
问题内容: 我将如何更新每两秒钟在服务器上更新一次的映像,而无需用户按下刷新按钮,我的第一个猜测是ajax,但我之前从未真正使用过它。有人能指出我正确的方向吗? 编辑:忘记提及图像是由perl脚本生成的.gif-尝试通过url抓取它返回脚本 问题答案: 您的Perl脚本似乎有问题。尝试通过URL访问图像应该仍然返回图像。它应该返回二进制数据而不是脚本。您还应该将响应的Content- type标头
问题内容: 我从数据库获取数据并将其显示在div中…我要做的是单击链接时应更改div的内容 一种选择是通过URL将参数传递给自身并重新加载页面… 我需要这样做而 无需重新加载\刷新 … 目的是当我单击任何链接时,div和php变量的内容无需刷新即可更新....这样 用户可以看到新数据 ,然后如果执行某些查询,它将在新变量上 ps我知道它将需要一些AJAX,但我不知道AJAX ..所以请以我可以学习
问题内容: 我正在辩论应该如何学习。主要是,如果我从数据库中获取大量信息以将其加载到页面上,那么最好的方式是操纵页面而不需要重新加载。使用XML之类的东西是最好的选择,还是我应该使用的其他东西。我知道其中很多使用HTML Dom和XML Dom,但是我不想开始学习我不需要的东西。 问题答案: 您正在寻找的技术名称是AJAX,它代表异步Javascript和XML(尽管目前大多数AJAX使用JSON
我想重新加载页面。我该怎么做?