对于单页应用程序,有什么方法可以在服务器有更新部署时强制重新加载页面和/或 JavaScript 文件?
一个明显的方法是轮询一些服务器资源以查看应用程序的当前版本是否正在浏览器中运行,如果没有则加载更新的资源。
我想知道是否有更普遍接受的方法利用特定的 HTTP 或 DOM 功能。
更新
我正在阅读有关 HTML5 Appcache 的信息。这似乎更适合无需服务器连接即可运行的应用程序。我认为这与从服务器更新 SPA 资源(包括页面本身)无关。我说得对吗?
最佳答案
你可以使用一个long polling
请求来知道什么时候有更新,而不必在特定的时间间隔内做请求,当长轮询请求返回时,你可以更新整个页面,因为旧的javascript文件和事件将绑定(bind)到 DOM 元素,因此重新加载页面会更容易。
编辑
我阅读了您关于让用户继续使用该页面的评论,同时更新了内容,但我认为这非常危险...仅显示通知以告诉用户有更新会不会太糟糕了,并建议他/她重新加载页面?
否则您将不得不撤消以前的脚本,例如从 DOM 元素解除绑定(bind)事件。
您可以使用 jQuery 轻松取消绑定(bind)事件:how to unbind all event using jquery 这适用于一个 DOM 元素,您必须为页面中的每个 DOM 元素执行此操作。
关于javascript - 强制更新单页应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17817870/