OC

Knowledge OS
主帖 11 条回复

有什么好的办法同步网络和本地core data缓存?

jackchen06 jackchen06 · 2013年11月05日 · 阅读 4 · 无人欣赏。

各位,有什么好办法来同步网络和本地core data缓存?如何知道本地已经是最新数据,有什么简单易行的方法或者第三方开源包吗?

回复

11 条
#3
stoneman2011
2013年11月05日

我到现在都还没用上core data 呢? core data 好用不?

#4
terryso
2013年11月05日

这个用Restkit很简单。。。我们项目一直在用。。。

#5
terryso
2013年11月05日

想知道本地的缓存是否是最新数据,要服务器做ETag

#7
terryso
2013年11月05日

6楼 @jackchen06 google一下吧,简单说就是服务器第一个返回数据时,带一个唯一标识给客户端,客户端下次请求要带上这个标识,服务器根据这个标识,判断这次请求有没有新数据,没有更新的话就直接返回304,客户端收到这个code就会知道服务端没有更新数据,然后直接从本地缓存读取数据。。。

#8
nickel
2013年11月05日

客户端发送请求时,先读取本地缓存的文件获取时间,然后在请求里假如If-Modified-Since这个header,值就是缓存文件的时间(GMT格式)。然后服务器会自动根据If-Modified-Since所提供的时间与服务器所存储的文件时间比对,如果旧于客户端提供的时间则回复304,意思是没有更新,不用重新下载。

这是最基本的http通讯逻辑之一

#9
terryso
2013年11月05日

8楼 @nickel 通过更新时间很多时候,是不太准确的,还是ETag比较好。。。

#10
nickel
2013年11月05日

9楼 你说的对,不过etag如果对于客户端长期缓存的文件来说需要单独维护其etag,而时间不需要。这得看要求多准确了。

通常而言,现在的移动设备都是通过网络时间同步的,而服务器通常也会网络时间同步,以保证时间的准确性,所以通常而言问题不大。但是一定要保证非常准确的更新,当然是etag比较好,尤其如果是临时数据可以直接在内存维护etag就可以了。

本帖有11个回复,因为您没有注册或者登录本站,所以只能看到本帖的10条回复。如果想看到全部回复,请注册或者登录本站。
登录 或者 注册
顶楼 / 底楼 / 首页