2012-03-12 73 views
2

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

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

任何其他想法或建议?

回答

2

可以保持更新日志在客户端(只是IDS,而不是记录本身)的(即要与服务器同步的记录ID的列表)。

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

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

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

相关问题