使用Ajax时检查客户端和服务器的同步状态

时间:2012-03-12 14:37:14

标签: javascript ajax synchronization client-server

我有一个带有大订单的Web应用程序:300个以上的项目金额输入字段,每个字段都有一个按钮来增加和减少金额。输入字段中的每个更改都通过Ajax发送到服务器。按钮被“去抖动”:收集点击,最后一次点击后200毫秒发送新金额。现在似乎有些请求失败,可能是由于网络状况不佳,但它也可能是服务器问题。这意味着显示的数量和存储在服务器上的数量不同。 我可以使用哪些策略来保持客户端和服务器同步?目前我看到两个选择:

  • 客户端上的错误处理 - 当请求失败时,重新发送它(具有最大尝试次数)。
  • 计算所有金额的校验和/散列,并将其与金额一起发送。如果服务器计算不同的金额,则返回错误代码,并将所有字段内容发送到服务器。

还有其他想法或建议吗?

1 个答案:

答案 0 :(得分:2)

您可以在客户端维护一个ChangeLog(与服务器同步的记录ID列表)(只是ID,而不是记录本身)。

然后在同步过程中确保服务器发回成功处理记录的确认。

如果成功,请从ChangeLog中删除记录。如果没有,它将保留并在下一个同步过程中重新发送。

这是SyncML标准使用的协议,可能适用于您的情况。