0

我正在制作一个允许用户离线登录的网络应用程序,但前提是他们之前已经在线登录过。我遇到的问题是,为了让用户能够离线登录,我需要缓存我的登录页面。如果我这样做,缓存会在用户登录之前更新,并且因为我的服务器将未经身份验证的用户重定向到登录页面,所有缓存的页面最终都是登录页面的副本。

当我看到另一篇将会话 ID 作为参数传递给清单 url 的帖子时,我有希望,但在我的情况下,它没有帮助,因为它仍然在登录之前下载缓存。考虑到我的用户可能会打开登录页面在线时,但只有在离线时才延迟登录。

我需要一种方法来停止特定页面(例如我的登录页面)中的缓存更新,而无需将我的登录页面从我的清单中取出。我已经尝试了以下代码,但所有页面都被下载了:

window.applicationCache.addEventListener("checking",function(e){
    e.stopPropagation();
    e.preventDefault();
}, true);
4

1 回答 1

0

可能已经找到了一种方法来做我想做的事。如果其他人有类似的问题,这是我的解决方案。

  • 创建 login_offline.html 或捕获请求服务器端并将 */login_offline.html 重定向到 login.html。
  • 将清单中的 */login.html 替换为 */login_offline.html 并删除 */login.html 中的清单声明。将清单声明留在仅在登录后可用的每个页面中。
  • 如果清单中还没有,则将 Fallback 部分添加到清单中,并将其放入:

    回退:signin.htm signin-offline.htm

于 2016-04-12T12:48:41.803 回答