Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
scsfwgy opened this issue Sep 14, 2018 · 15 comments
Open

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

scsfwgy opened this issue Sep 14, 2018 · 15 comments

Comments

@scsfwgy
Copy link

scsfwgy commented Sep 14, 2018

Mobile:

Android OS:

NetWork:

URL:

LIB Version:


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

@yale8848
Copy link
Owner

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

@scsfwgy
Copy link
Author

scsfwgy commented Sep 14, 2018

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

@yale8848
Copy link
Owner

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

@scsfwgy
Copy link
Author

scsfwgy commented Sep 18, 2018

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

@palorotolo
Copy link

同样有这个需求

@Eklir
Copy link

Eklir commented May 13, 2019

这个需求实现了么?

@yale8848
Copy link
Owner

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

@GHChrisSu
Copy link

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

@yale8848
Copy link
Owner

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

@anderson9
Copy link

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

@GHChrisSu
Copy link

GHChrisSu commented Jun 3, 2019 via email

@yale8848
Copy link
Owner

yale8848 commented Jun 4, 2019

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

@guozhiqiang123
Copy link

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

@yale8848
Copy link
Owner

yale8848 commented Oct 9, 2019

@guozhiqiang123 好的,谢谢

@900326
Copy link

900326 commented Nov 28, 2019

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants