【发布时间】:2016-02-08 04:39:03
【问题描述】:
简介:
我在后端有一个复杂而持久的查询,在前端反馈了 Angular 应用程序。
目前,Angular 应用程序在后端使用缓存数据,而不是直接从复杂查询中读取,这需要几分钟。缓存每天早晚都会变暖。
用户对 UI 进行更改并保存数据,然后将其传递到服务器端,并保存到数据库中。那时 UI 是最新的,直到用户刷新页面。同时数据库是最新的,但缓存是陈旧的。
所以当用户刷新页面时,过时的缓存值会显示在页面上。
更多信息:
我现在正在考虑刷新缓存的方法,欢迎有经验的人提供任何建议。
我的想法是通过缓存作业(一次一个)刷新缓存,一旦用户保存某些内容,该作业就会排队。该作业将包含更改的相关信息,并且不必重新计算整个缓存,而只需重新计算更改的位。
问题部分:
即使用户刷新页面,我可以使用什么技术让用户及时了解数据?我是否应该在客户端以 indexedDB 或 localstorage 的形式保存“增量”,同时将数据发送到服务器。因此,当页面刷新时,用户会从本地存储或索引数据库中读取数据。
我还在考虑这个问题,显然我在这方面没有太多经验,到目前为止我所采取的方向有什么问题吗?
基本上我可以更改任何东西,包括后端/前端/缓存它仍处于 POC 阶段,我只是想尽可能多地了解对其他人有用的东西。
更新
更多背景。我正在处理类似页面的索引,因此可以内联编辑多个记录。
我还在后端对平面数据库记录进行了一些转换,然后将它们转储到类似地图的结构中,并以 json 的形式将其传递给前端。
【问题讨论】:
-
如果用户进行了一些更改并保存,为什么不能在刷新时请求这些数据库值?
-
我认为最简单的方法是确保您知道创建缓存的时间。当您进行更改时,将页面的当前状态连同缓存的时间一起保存在 localStorage 中。当你加载页面时,你会得到缓存的数据,检查它是否比你的 localStorage 版本更新。如果是,请使用缓存,如果不是,请从 localStorage 重新加载您的数据,因为它已经缓存了数据以及您的更改。
-
您所描述的听起来更像是一项数据转换工作,而不是缓存。详细说明您在服务器端做什么和使用什么会很有用。
-
@Matt Way 感谢您的回复。我无法获取这些记录,因为我不是在查看单个记录,而是在查看类似页面的索引。
-
@dave 感谢您的回复,听起来不错,我会试一试。
标签: javascript java angularjs caching