有一个问题,我们的一些用户有一个错误的服务工作者坐在他们的Facebook浏览器从我们的网站。
问题:Facebook App用户在访问我们在FB上共享的页面时,会在FB浏览器上看到我们的“您离线页面”。
错误似乎是旧版本的Google Workbox(3.6.1)使用Chrome75自动返回FB应用程序中的您离线页面。更新Workbox修复了它。
对Workbox的引用在service worker中,因此当我们更新Workbox版本(解决了这个问题)时,一些用户仍然缓存了旧版本。
如果用户清除他们的FB应用缓存或重新安装FB,那么一切都很好,他们可以看到我们的内容。但是我们想尝试强制软件更新,而不要求他们这样做。
为了从FB浏览器中清除旧的服务人员,我们尝试了以下方法:
<script>
"use strict";
console.log("Service Worker Registration");
function isFacebookApp() {
var ua = navigator.userAgent || navigator.vendor || window.opera;
return (ua.indexOf("FBAN") > -1) || (ua.indexOf("FBAV") > -1);
}
if ("serviceWorker" in navigator) {
if(isFacebookApp() == true) {
console.log("Service Worker Registration: using v2, via Facebook App");
navigator.serviceWorker.getRegistrations().then(function(registrations) {
for(let registration of registrations) {
console.log("Service Worker Registration: "+registration);
registration.unregister();
}
});
} else {
console.log("Service Worker Registration: using v2, not via Facebook App");
window.addEventListener("load", () => {
navigator.serviceWorker.register("/sw.js");
});
}
}
</script>
然而,我们的分析显示,我们仍然在You is Offline页面上获得点击率,并且我们仍然从用户那里得到报告,他们可以跟踪我们文章的链接。
有人能帮忙吗?有没有办法强迫FB的应用程序内浏览器更新缓存,并让我们的用户使用一名工作的服务人员?
最新消息
到目前为止,我们已经尝试了:
skipWaiting()
/offline
页面导致net::ERR\u失败
错误我们的分析表明:
什么都没起作用:我们的服务人员或其他东西仍在返回离线页面...
我们遇到了同样的问题,但表现略有不同——我们的用户开始收到一条错误消息“:: ERR失败”,尽管听起来是同一个原因。这个问题始于大约10天前,我设法绕过缓存的唯一方法是将用户发送到网站的新版本——通过从我发送到的网址中删除www.,并从301'ing到与www.
我也像你一样尝试了很多解决方案,但似乎不可能让服务人员联系网站-如果你把Charles放在手机和互联网之间,你会发现没有流量到达你的网站。我希望在停用一段时间后,服务人员将被应用程序缓存清理干净,我们可以切换回来。对不起,我帮不上什么忙,但请放心,你不是一个人!
这是Chrome/ChromiumWebView中的一个bug,在https://bugs.chromium.org/p/chromium/issues/detail?id=977784
在这一点上,修复方案应该广泛推出。
我的应用程序是用Reac/Redux编写的,并使用Workbox生成我的服务人员。这是有效的-我可以在运行“workbox inject:manifest”时确认在生成的service worker中更新了修订。 但是,我注意到客户端不会在新版本后更新缓存,新代码只会在几次刷新后加载。对于每个版本,我都确认更新了版本。 到目前为止,我尝试在新版本发布后强制浏览器清除缓存的方法有: 在我的Servi
我一直在阅读《html5rocks服务工作者简介》一文,并创建了一个基本的服务工作者,它可以缓存页面、JS和CSS,并按预期工作: 当我对CSS进行更改时,由于服务人员正在从缓存中正确返回CSS,因此不会拾取此更改。 我陷入困境的地方是,如果我要更改HTML、JS或CSS,我如何确保服务人员可以从服务器加载较新版本,而不是从缓存加载?我曾尝试在CSS导入上使用版本戳,但似乎不起作用。
情况: 在我的网站上。com/game,我在 在我的服务器上,的最大值为。 问题: 。 问题是,每当用户访问,它显示空页面,不再执行任何操作。我无法让客户端获取新的。 如何让客户端获取新的?
只是在基本的编码技巧上工作,当我在css文件中进行更改时,这些更改不会在非我的浏览器上显示出来。 下面是我的index.html代码: 非常感谢你给我时间。
我正在开发一个基于云的后端HTTP服务,该服务将公开用于与一些on-prem系统的集成。客户机系统是由外部供应商定制的,它们是带有自己数据库的后端系统。这些系统部署在我们客户的公司中,我们无法访问它们,也无法控制它们。我们向供应商提供我们的API规范,他们实现客户机代码。 我的服务与客户交换的数据格式基于XML,并遵循一定的标准。供应商用不同的编程语言实现他们的客户机系统,随着时间的推移,新的供应
问题内容: 我在我的角度应用程序中创建了工厂/服务。 我想在浏览器中调试它。有没有一种方法可以访问其实例并检查其函数和变量的值是什么? 角度范围可以使用 是否有类似的方式访问工厂? 问题答案: 我相信您可以使用以下方式: 并且由于angularjs服务是 单例的 ,因此在任何 angular.element 上执行此操作都将始终返回相同的服务实例/对象。