나는 caldav 및 동기화 보고서를 사용하여 syn을 구현하려고하지만 여러 클라이언트와 서버간에 하나의 달력 (하나의 VEVENT)을 동기화하는 방법에 대한 개념적인 문제가 있습니다.CALDAV 동기화 알고리즘
대부분의 rfc는 마지막으로 동기화 된 이후 자원이 변경되었는지 여부를 결정하기 위해 etag를 사용하는 것을 말합니다. etag가 변경되면 마지막 동기화 이후 자원이 변경된 것입니다. 나는 그것을 얻는다. 그러나 최근 변경 사항을 어떻게 알 수 있습니까?
예를 들어 클라이언트 A는 마지막으로 오전 1시에 편집되고 오전 8시에 동기화되는 그래픽 'X'가 있습니다. 클라이언트 B는 또한 ical X 버전을 가지고 있으며, 2AM에서 편집하고 7AM에서 동기화합니다. 따라서 B가 새로운 것이고 A와 B가 A보다 먼저 동기화됩니다.
A가 동기화되면 B의 새 X 버전이 표시됩니다. etag에서 X는 변경되었지만 '변경'은 아님을 알 수 있습니다. 나는 A가 B로 덮어 써야한다고 가정하고 있는데, B가 더 새로운 것 (또는 적어도 B가 더 새로운 것을 말하는 사용자를 프롬프트 할 수 있기 때문이다.) ....이 가정은 정확하다 /이 상황을 처리하는 표준 방법이 있는가?
일반적으로 서버와 클라이언트간에 어떤 파일이 더 새로운 것인지 파악하려고 할 때 문제가 발생합니다. etag은 '변경됨'만 감지 할 수 있지만 '최신'은 감지 할 수 없습니다. 마지막으로 수정 한 날짜는 클라이언트의 최종 편집 날짜가 아니라 ical 업로드 날짜를 반영한 것 같습니다. 이것은 제가 뭔가를 놓치고 있다고 믿게합니다. 동기화를 위해 일반적으로 받아 들여지는 알고리즘이 있습니까?