AngularJS-处理缓存、服务器验证和更新缓存的方法

AngularJS-处理缓存、服务器验证和更新缓存的方法,angularjs,Angularjs,我在用AngularJS。由于一些资源很难通过API(一个数组中包含的对象从数百个到大约1000个),所以我会在前端缓存这些对象 我有一个html表格来保存这些信息。每行显示缓存中的一个对象,并提供选择选项以修改这些对象中的某些字段。修改其中一个字段时,会向服务器发出请求,通知对对象所做的更改 当然,需要保持缓存同步。如果将缓存数据绑定到表,则每次操作都会对缓存进行更改。如果服务器拒绝其中一个更改,则缓存和服务器将不同步。如果没有对象的副本,我将无法回滚 保持同步的最佳实践是什么 我的解决方案是

我在用AngularJS。由于一些资源很难通过API(一个数组中包含的对象从数百个到大约1000个),所以我会在前端缓存这些对象

我有一个html表格来保存这些信息。每行显示缓存中的一个对象,并提供选择选项以修改这些对象中的某些字段。修改其中一个字段时,会向服务器发出请求,通知对对象所做的更改

当然,需要保持缓存同步。如果将缓存数据绑定到表,则每次操作都会对缓存进行更改。如果服务器拒绝其中一个更改,则缓存和服务器将不同步。如果没有对象的副本,我将无法回滚

保持同步的最佳实践是什么

我的解决方案是克隆缓存并将其用于表。更改字段只会影响副本,并会发出请求。一旦服务器接受请求,我就会更新缓存

我认为这种方法在将来容易出错。我说的容易出错的意思基本上是在克隆阵列时。这是因为克隆必须小心地进行,以真正克隆东西,而不仅仅是获得一个浅拷贝

还有其他更优雅的同步方式吗


我希望我能够很好地解释这个问题。

您使用什么来复制对象?深度复制您对套接字连接的看法,然后你保留一些afterSave呼叫,更改频道,然后更新缓存?@Scoup我们已经考虑过了,以防在多用户环境中使用它。@Styx Im实际上使用的是lodashcloneDeep@kitimenpolku我不明白为什么socket.io不能在多用户环境中工作,如果所有用户都在“观看”每个人都会在同一个频道看到触发器的变化