2012-03-12 71 views
2

我有一個大訂單形式的Web應用程序:項目數量超過300個輸入字段,每個輸入字段都有一個增加和減少金額的按鈕。輸入字段中的每個更改都通過Ajax發送到服務器。這些按鈕被「去抖」:點擊被收集起來,新的金額在最後一次點擊後200毫秒內發送。現在看起來有些請求失敗了,可能是由於網絡條件不好,但也可能是服務器問題。這意味着顯示的金額和存儲在服務器上的金額有所不同。 我可以使用什麼策略讓客戶端和服務器保持同步?目前我看到兩種選擇:在使用Ajax時檢查客戶端和服務器的同步狀態

  • 客戶端錯誤處理 - 當請求失敗時,重新發送它(以最大嘗試次數)。
  • 計算所有金額的校驗和/散列並將其與金額一起發送。如果服務器計算出不同的金額,它將返回一個錯誤代碼,並將所有字段內容發送到服務器。

任何其他想法或建議?

回答

2

可以保持更新日誌在客戶端(只是IDS,而不是記錄本身)的(即要與服務器同步的記錄ID的列表)。

然後在同步過程確保服務器發回的具有成功處理的記錄的確認。

如果成功,請從ChangeLog中刪除記錄。如果不是,它將保持並在下一個同步過程中重新發送。

這是SyncML的標準中使用的協議,適用於您的情況。

相關問題