简介
-
Dio-http-cache 是 Flutter 的 http 缓存库,为 Dio 设计,就像 Android 中的 RxCache 一样;
-
Dio-http-cache 使用 sqflite 作为磁盘缓存,使用 Google/quiver-dart 的LRU算法 作为内存缓存策略;
- 有参考 flutter_cache_manager 开发,为此感谢.
添加依赖
dio_http_cache: ^0.1.0
简单使用
-
为 dio 添加拦截器:
dio.interceptors.add(DioCacheManager(CacheConfig()).interceptor); -
为需要缓存的请求添加 options:
Dio().get( "http://www.google.com", options: buildCacheOptions(Duration(days: 7)), );
进阶使用
- buildCacheOptions可以配置多种参数满足不同的缓存需求:
- MaxAge: 只有这个是必须的参数,设置缓存的时间;
- MaxStale: 设置过期时常,在maxAge过期,而请求网络失败的时候,如果maxStale没有过期,则会使用这个缓存数据。
- subKey: cache_dio 默认使用 url 作为缓存 key ,但当 url 不够用的时候,比如 post 请求不同参数比如分页的时候,就需要配合subKey使用。
- CacheConfig 可以配置一些默认参数:
- encrypt / dectrypt: 这2个必须组合使用,实现磁盘缓存数据的加密,如果没有设置加密,默认会用 base64 重新编码再存到数据库。
- DefaultMaxAge: 默认值为 Duration( day: 7 ), 在上面 buildCacheOption 中如果没有配置 MaxAge 有错误,或者自己实现了 option 而没有配置 MaxAge, 会使用这个默认值;
- DefalutMaxStale: 和 DefaultMaxAge 类似;
- DatabaseName: 配置数据库名;
- SkipMemoryCache: 默认 false;
- SkipDiskCache: 默认 false;
- MaxMemoryCacheCount: 最大的内存缓存数量,默认100;