防止特定缓存页面触发应用程序缓存更新
Prevent specific cached pages from trigging application cache updates
我正在制作一个允许用户离线登录的网络应用程序,但前提是他们之前已经在线登录过。我遇到的问题是,为了让用户能够离线登录,我需要缓存我的登录页面。如果我这样做,缓存会在用户登录之前得到更新,并且由于我的服务器将未经身份验证的用户重定向到登录页面,所有缓存页面最终都会成为登录页面的副本。
当我看到另一个 post 将会话 ID 作为参数传递给清单时,我曾抱有希望 url 但在我的情况下它没有帮助,因为它仍在下载缓存在登录之前。考虑到我的用户可能会在在线时打开登录页面,但只有在离线时才延迟登录。
我需要一种方法来停止特定页面(例如我的登录页面)中的缓存更新,而无需将我的登录页面从我的清单中删除。我尝试了以下代码,但所有页面都已下载:
window.applicationCache.addEventListener("checking",function(e){
e.stopPropagation();
e.preventDefault();
}, true);
可能已经找到了一种方法来做我想做的事。如果其他人遇到类似问题,这是我的解决方案。
- 创建一个 login_offline.html 或捕获请求服务器端并将 */login_offline.html 重定向到 login.html.
- 将清单中的 */login.html 替换为 */login_offline.html 并删除 */login.html 中的清单声明。将清单声明保留在仅在登录后可用的每个页面中。
向清单中添加回退部分(如果还没有)并在其中放置:
回退:
signin.htm登录-offline.htm
我正在制作一个允许用户离线登录的网络应用程序,但前提是他们之前已经在线登录过。我遇到的问题是,为了让用户能够离线登录,我需要缓存我的登录页面。如果我这样做,缓存会在用户登录之前得到更新,并且由于我的服务器将未经身份验证的用户重定向到登录页面,所有缓存页面最终都会成为登录页面的副本。
当我看到另一个 post 将会话 ID 作为参数传递给清单时,我曾抱有希望 url 但在我的情况下它没有帮助,因为它仍在下载缓存在登录之前。考虑到我的用户可能会在在线时打开登录页面,但只有在离线时才延迟登录。
我需要一种方法来停止特定页面(例如我的登录页面)中的缓存更新,而无需将我的登录页面从我的清单中删除。我尝试了以下代码,但所有页面都已下载:
window.applicationCache.addEventListener("checking",function(e){
e.stopPropagation();
e.preventDefault();
}, true);
可能已经找到了一种方法来做我想做的事。如果其他人遇到类似问题,这是我的解决方案。
- 创建一个 login_offline.html 或捕获请求服务器端并将 */login_offline.html 重定向到 login.html.
- 将清单中的 */login.html 替换为 */login_offline.html 并删除 */login.html 中的清单声明。将清单声明保留在仅在登录后可用的每个页面中。
向清单中添加回退部分(如果还没有)并在其中放置:
回退: signin.htm登录-offline.htm