2016-04-11 96 views
0

我正在制作一个Web应用程序,允许用户在离线状态下登录,但前提是他们已经在线登录。我遇到的问题是,为了让用户能够脱机登录,我需要缓存我的登录页面。如果我这样做了,那么在用户登录之前会更新缓存,并且由于我的服务器将未经身份验证的用户重定向到登录页面,所有缓存的页面最终都会成为登录页面的副本。防止特定的缓存页面触发应用程序缓存更新

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

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

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

回答

0

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

  • 请创建一个login_offline.html或捕获请求服务器端并将*/login_offline.html重定向到login.html。
  • 将*/login.html替换为清单中的*/login_offline.html,并删除*/login.html中的清单声明。 。在仅可登录后页面的每个离开舱单申报
  • 添加回退部分清单,如果不存在的话,并在它把:

    FALLBACK: signin.htm登入,offline.htm