GNOME Bugzilla – Bug 617168
WebDAV Addressbook backend should use ctags
Last modified: 2010-05-07 16:28:43 UTC
Rather than issuing a PROPFIND for every time the folder is accessed the backend should just do a depth 0 PROPFIND for getctag; if that tag is not available or the value has changed perform the PROPFIND otherwise the contents of the collection have not changed. awilliam@linux-yu4c:~> curl -H 'Depth: 0' -d '<?xml version="1.0" encoding="utf-8"?><propfind xmlns="DAV:"><prop><getctag/></prop></propfind>' -X PROPFIND -u adam:fred123 http://localhost:8080/dav/Contacts/ <?xml version="1.0" encoding="utf-8"?><D:multistatus xmlns:D="DAV:"><D:response><D:href>/dav/Contacts</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getctag>8012</D:getctag></D:prop></D:propstat></D:response></D:multistatus>awilliam@linux-yu4c:~> Many GroupDAV servers support getctag including OpenGroupware, Apple's calendar server, and Google. Clients including Lightning/Mozilla include support as well. This provides much greater efficiency between the client and the server as generating the getctag response is much less expensive than the PROPFIND depth 1 response of a large collection. The getctag value changes if any element in the collection has changed.
Created attachment 160523 [details] [review] eds patch for evolution-data-server; This should make it. I do not have a server which supports this kind of stuff configured, thus if you could give it a try and report if something will not work, then it'll be great. I'm committing this meanwhile. Thanks.
Created commit 2521ff1 in eds master (2.31.2+)