我正在尝试使用 caldav 和同步报告来实现同步,但是我遇到了关于如何在多个客户端和服务器之间同步一个日历(一个 VEVENT)的概念问题。
大多数 rfc 是指使用 etag 来确定资源自上次同步以来是否已更改。(如果 etag 更改,则资源自上次同步后已更改)。我明白了。但是我怎么知道哪个变化是最近的?
例如,客户端 A 有一个在凌晨 1 点最后编辑的 ical“X”,它们在上午 8 点同步。客户端 B 也有一个 ical X 版本,他们在凌晨 2 点编辑并在早上 7 点同步。所以 B 比 A 更新,B 在 A 之前同步。
当 A 同步时,它将看到 B 的新版本 X。从 etag 中它知道 X 已更改,但不是“何时”更改。我假设 A 应该用 B 覆盖,因为 B 较新(或者至少能够提示用户说 B 较新)....这个假设是否正确/是否有处理这种情况的标准方法?
通常的问题是当试图找出服务器和客户端之间的文件更新时。etag 只能检测“更改”但不能检测“更新”。最后修改日期似乎反映了 icals 上传日期,而不是它在客户端上的最后编辑日期。这让我相信我错过了一些东西。是否有一些普遍接受的同步算法?