我们使用angularjs的本地存储模块。
https://github.com/grevory/angular-local-storage
现在,有人能建议我们如何在客户端设置缓存依赖关系吗?这样,当服务器中的数据发生变化时,本地存储就会失效(强制从服务器重新获取数据)。
现在在测试环境中,我们必须要求测试人员在每次发布时清除浏览器缓存。在生产中不能采用这种方法。
谢谢你的帮助。
在应用程序中设置一个版本号,并在用户访问时将其存储在本地存储中。
初始化应用程序时,将本地存储版本与App.version
进行比较。
如果不同,请清除本地存储并重新渲染、重新加载、重新初始化或为应用程序执行任何操作。
要处理用户在您实施此行为之前使用过您的应用程序的情况,只需确保它在本地存储中找不到版本密钥时也会清除本地存储即可。
只是与评论有关的几个进一步注释。
由于发生了不同的事情,我过去在本地存储方面遇到过问题。第3部分超出了问题的范围,但为了完整性,值得一提。
-
一个新版本:应用程序源代码发生了变化,存储的数据结构也有所不同。例如,也许现在是JSON.stringized了。或者,我们本来期待一个字符串,现在我们得到了一个整数,这可能会通过严格的类型检查破坏一些东西。
这是使用上述方法来解决的。该应用程序已更改,因此该应用程序有了新版本,并且它知道无法信任从本地存储中检索到的不同版本的数据。
-
您描述的问题是:服务器上的数据已更新,应用程序本地存储的副本已过期。
我们如何告诉应用程序情况发生了变化?定期从服务器请求一些令牌,也许是时间戳,我们可以比较这些令牌,看看自上次访问数据以来是否发生了变化。这个问题涉及到许多不同的方法。
-
JavaScript本身已经发生了变化:我们有一个缩小的生产版本,现在有了一个新版本,但用户仍然缓存了旧版本。当服务器期望从新构建中收到不同的请求时,这是一个问题。
这里的简单解决方案是在资源URL的末尾添加某种版本号,以便浏览器请求
application.min.js?v=2
而不是application.min.js?v=1
。