防止特定缓存页面触发应用程序缓存更新

时间:2016-04-11 19:56:36

标签: html5 web-applications offlineapps offline-browsing

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

    FALLBACK: signin.htm signin-offline.htm