Flutter 使用 http 响应头缓存 JSON 响应

Posted

技术标签:

【中文标题】Flutter 使用 http 响应头缓存 JSON 响应【英文标题】:Flutter Cache JSON response using http response header 【发布时间】:2020-03-25 16:15:43 【问题描述】:

我正在尝试为服务器 JSON 响应创建和使用缓存。

类似 volley 响应缓存的东西。 https://***.com/a/32022946/1993001 在android

我正在使用DIO 进行网络操作。

【问题讨论】:

【参考方案1】:

您可以在 Dio 请求之上使用拦截器创建自己的缓存。

您可以自己创建:

import 'package:dio/dio.dart';

class CacheInterceptor extends Interceptor 
  CacheInterceptor();

  var _cache = new Map<Uri, Response>();

  @override
  onRequest(RequestOptions options) async 
    return options;
  

  @override
  onResponse(Response response) async 
    _cache[response.request.uri] = response;
  

  @override
  onError(DioError e) async
    print('onError: $e');
    if (e.type == DioErrorType.CONNECT_TIMEOUT || e.type == DioErrorType.DEFAULT) 
      var cachedResponse = _cache[e.request.uri];
      if (cachedResponse != null) 
        return cachedResponse;
      
    
    return e;
  

然后将其用于:

final dio = Dio()..interceptors.add(CacheInterceptor());   

或者只是检查库:https://pub.dev/packages/dio_cache

【讨论】:

以上是关于Flutter 使用 http 响应头缓存 JSON 响应的主要内容,如果未能解决你的问题,请参考以下文章

从HTTP响应头看各家CDN缓存技术

HTTP缓存控制 总结

常用HTTP消息头

Worklight 适配器响应头缓存控制

浏览器缓存机制

http协议常见的请求头和响应头