Google app engine 服务人员错误处理应用程序引擎上的用户登录
我的服务人员和我的谷歌应用程序引擎应用程序有一个特别的问题。服务人员可以完美地安装和激活。此外,我在另一个应用程序中使用了完全相同的服务人员(不需要任何用户登录),它运行良好。但是,在我当前的应用程序中,只有一个页面(应用程序引擎呈现该页面,并使用内置用户API在成功登录时发送该页面)。我的问题是,我不希望缓存根地址,即来自服务器的呈现页面。以下是我要缓存的文件阵列:Google app engine 服务人员错误处理应用程序引擎上的用户登录,google-app-engine,caching,service-worker,google-app-engine-python,Google App Engine,Caching,Service Worker,Google App Engine Python,我的服务人员和我的谷歌应用程序引擎应用程序有一个特别的问题。服务人员可以完美地安装和激活。此外,我在另一个应用程序中使用了完全相同的服务人员(不需要任何用户登录),它运行良好。但是,在我当前的应用程序中,只有一个页面(应用程序引擎呈现该页面,并使用内置用户API在成功登录时发送该页面)。我的问题是,我不希望缓存根地址,即来自服务器的呈现页面。以下是我要缓存的文件阵列: var filesToCache = ['/manifest.json','/js/app.js','/js/jquery-3.
var filesToCache = ['/manifest.json','/js/app.js','/js/jquery-3.js','/js/jquery.matchHeight.js','/js/materialize2.min.js','/js/vue.js','/js/vuex.min.js','/js/chart.js','/css/materialize.min.css','/css/style.css', '/images/case.jpg'];
正如您所看到的,我只是试图缓存脚本,因为HTML必须呈现在服务器端,而且它非常紧凑,所以我不介意发出小的网络请求。这是我的服务人员,它位于根文件夹中
self.addEventListener('install', function(e) {
console.log('[ServiceWorker] Install');
e.waitUntil(
caches.open(cacheName)
.then(function(cache) {
console.log('[ServiceWorker] Caching app shell');
return cache.addAll(filesToCache);
})
.catch(function(e) {
console.error(e);
})
);
});
self.addEventListener('activate', function(e) {
console.log('[ServiceWorker] Activate');
e.waitUntil(
caches.keys().then(function(keyList) {
return Promise.all(keyList.map(function(key) {
if (key !== cacheName) {
console.log('[ServiceWorker] Removing old cache', key);
return caches.delete(key);
}
}));
})
);
});
self.addEventListener('fetch', function(e) {
console.log('[ServiceWorker] Fetch')
e.respondWith(
caches.match(e.request)
.then(function(response) {
return response || fetch(e.request)
})
);
});
问题是,尽管我没有尝试缓存根地址,但服务工作者将尝试返回响应,而不是用户初始尝试的获取。这是用户导航到应用程序后的事件序列:
1-带有“登录谷歌”按钮的登录页
2-成功登录后重定向到应用程序
预期结果:用户被重定向到谷歌自己的解决方案,之后,该用户将被重定向回完全登录的我的应用程序
实际结果:服务工作者拦截请求,提供未定义的响应,无限期地将用户重定向回登录页面
我对服务人员来说是个新手,所以可能在拦截响应和一些边缘案例中缺少了一些东西,但我不确定这是什么。我尝试拆分return语句以首先检查是否有响应,因此如果响应未定义,它将跳过return-response语句,克隆事件,然后在fetch请求中返回事件请求。然而,我得到了完全相同的结果
以前有没有人遇到过这个问题,或者知道该怎么办?我花了昨天的时间在这个问题上,但没有任何结果,只是放弃了回复,从网络上提供一切服务,但我真的很想解决它。提前谢谢你的帮助 贴出一句话:“我对根目录(/)也有同样的问题,根目录会根据后端检查重定向到两个不同的页面。一旦serviceWorker缓存了一个状态,就不可能进入下一个状态。此外,google现在要求缓存根目录,否则将来就无法安装。”