只要是團隊合作,或是可多人合作操作的產品,就會遇到一個問題——協同編輯的數據變更。
具體情景:
用戶A、B 先後打開了同一條數據,並分別進行編輯,且B先於A保存數據,整體流程 如下圖:
如果此時,服務端允許A保存了,就會導致A保存的數據,會覆蓋B保存的數據。
這種問題,最優解決方案,當然是支持實時協作,例如 用websocket來進行長連接,實時更新數據。
但是,有些軟件搭載平臺,不支持WebSocket,例如掛載到IIS7上面的運行的軟件,或者無法進行長連接的程序,或者是不考慮實現同時編輯功能,那此時就只留下一個問題待解決——
阻攔協同編輯的最後變更者
要想知道誰是最後變更者,或者哪條數據是最新的一個版本,就需要一個東西——時間戳。
整體機制:
1.數據帶有時間戳,用戶請求數據時,用時間戳進行標記 此用戶的此次數據請求。
2.用戶請求保存時,將之前的時間戳標記 和 數據最新的時間戳進行比對,一致則進行數據保存,並更新時間戳;不一致,則拋出需要手動變更。