如何将"cache dependency"设置为本地存储



我们使用angularjs的本地存储模块。

https://github.com/grevory/angular-local-storage

现在,有人能建议我们如何在客户端设置缓存依赖关系吗?这样,当服务器中的数据发生变化时,本地存储就会失效(强制从服务器重新获取数据)。

现在在测试环境中,我们必须要求测试人员在每次发布时清除浏览器缓存。在生产中不能采用这种方法。

谢谢你的帮助。

在应用程序中设置一个版本号,并在用户访问时将其存储在本地存储中。

初始化应用程序时,将本地存储版本与App.version进行比较。

如果不同,请清除本地存储并重新渲染、重新加载、重新初始化或为应用程序执行任何操作。

要处理用户在您实施此行为之前使用过您的应用程序的情况,只需确保它在本地存储中找不到版本密钥时也会清除本地存储即可。


只是与评论有关的几个进一步注释。

由于发生了不同的事情,我过去在本地存储方面遇到过问题。第3部分超出了问题的范围,但为了完整性,值得一提。

  1. 一个新版本:应用程序源代码发生了变化,存储的数据结构也有所不同。例如,也许现在是JSON.stringized了。或者,我们本来期待一个字符串,现在我们得到了一个整数,这可能会通过严格的类型检查破坏一些东西。

    这是使用上述方法来解决的。该应用程序已更改,因此该应用程序有了新版本,并且它知道无法信任从本地存储中检索到的不同版本的数据。

  2. 您描述的问题是:服务器上的数据已更新,应用程序本地存储的副本已过期。

    我们如何告诉应用程序情况发生了变化?定期从服务器请求一些令牌,也许是时间戳,我们可以比较这些令牌,看看自上次访问数据以来是否发生了变化。这个问题涉及到许多不同的方法。

  3. JavaScript本身已经发生了变化:我们有一个缩小的生产版本,现在有了一个新版本,但用户仍然缓存了旧版本。当服务器期望从新构建中收到不同的请求时,这是一个问题。

    这里的简单解决方案是在资源URL的末尾添加某种版本号,以便浏览器请求application.min.js?v=2而不是application.min.js?v=1

最新更新