RetrofitCache icon indicating copy to clipboard operation
RetrofitCache copied to clipboard

有网络先加载缓存,再加载网络

Open scsfwgy opened this issue 5 years ago • 15 comments

Mobile:

Android OS:

NetWork:

URL:

LIB Version:


如题,现在业务上是这种需求。其实缓存类似于Gilde中的占位符作用,当进来的时候先显示缓存不至于一片空白,再去加载网络数据。当然没有缓存就显示空白。不知道作者是否有处理这一块?

scsfwgy avatar Sep 14 '18 04:09 scsfwgy

目前缓存这块用的标准的http缓存模式,不支持你说的这种模式,我想办法看看能否把这个功能实现

yale8848 avatar Sep 14 '18 06:09 yale8848

谢谢!其实这个需求我感觉挺正常的。但是我看了挺多的第三方缓存的处理,基本都不支持。

scsfwgy avatar Sep 14 '18 06:09 scsfwgy

其实这个需求有点怪,标准的http协议缓存逻辑是,在正常模式下,要先判断缓存是否过期,如果过期后才去服务器拿新的数据并展示,请注意:在未知(是否过期)的数据面前,我们是不能给用户展示,这个逻辑基本上是http协议哲学之一了;

yale8848 avatar Sep 14 '18 06:09 yale8848

=。=确实有点怪。但是确实给了这个需求....

scsfwgy avatar Sep 18 '18 01:09 scsfwgy

同样有这个需求

palorotolo avatar Nov 23 '18 07:11 palorotolo

这个需求实现了么?

Eklir avatar May 13 '19 12:05 Eklir

目前还没有想到好的实现方法

yale8848 avatar May 13 '19 14:05 yale8848

@yale8848 这种需求在服务器响应缓慢的时候有一定的作用,但是感觉这个时候已经是服务器应该做拓展了,真要实现个人感觉还是得根据自己的业务逻辑去先查数据库,不然就直接暴力取出http的缓存(虽然不知道怎么做) 😊

GHChrisSu avatar May 20 '19 08:05 GHChrisSu

@GHChrisSu 谢谢分享,你说的有道理,其实这个需求应该是在网慢的时候用的多;目前我确实没有想到好的办法,大家有好的想法可以分享一下;

yale8848 avatar May 20 '19 10:05 yale8848

提供思路。先取缓存给UI填上,然后取网络数据,子线程判断网络与缓存是否相等 ,相等不处理,不相等刷新缓存 刷新UI。 这样做目的是为了UI快速响应,又能在数据有变动时及时更改UI。

anderson9 avatar Jun 03 '19 12:06 anderson9

就是listadapter吧,如何做到应用,这样做必然和具体业务挂钩,如何通用,这是一个问题

2019年6月3日(月) 21:26 anderson93 [email protected]:

提供思路。先取缓存给UI填上,然后取网络数据,子线程判断网络与缓存是否相等 ,相等不处理,不相等刷新缓存 刷新UI。 这样做目的是为了UI快速响应,又能在数据有变动时及时更改UI。

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/yale8848/RetrofitCache/issues/25?email_source=notifications&email_token=ADJEIFCCHUFVO7WXURI64GLPYUEXFA5CNFSM4FVCOEBKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODWZHPCY#issuecomment-498235275, or mute the thread https://github.com/notifications/unsubscribe-auth/ADJEIFCES2XNG2ZXCMHWQELPYUEXFANCNFSM4FVCOEBA .

GHChrisSu avatar Jun 03 '19 12:06 GHChrisSu

谢谢各位分享意见; @anderson9 你的方法我可以尝试一下;@GHChirsSu 我想办做到通用化

yale8848 avatar Jun 04 '19 01:06 yale8848

可以参考OkGo这个开源库的缓存策略,这个库就支持楼主需求的这种缓存模式

guozhiqiang123 avatar Oct 09 '19 06:10 guozhiqiang123

@guozhiqiang123 好的,谢谢

yale8848 avatar Oct 09 '19 08:10 yale8848

https://github.com/z-chu/RxCache
这个可以满足你的需求,但是写法有点麻烦,对代码侵入大,可以参考下

900326 avatar Nov 28 '19 08:11 900326