Json Dart HttpServer缓存

Json Dart HttpServer缓存,json,dart,Json,Dart,我让Http服务器通过HttpClient从不同的服务器加载数据。您可以在此处看到代码: 我能够加载对JSON映射的响应,现在我想把这个映射保存在内存中,直到它失效为止,我可以更快地获得关于整个集合的更改方式的信息。将我的JSON映射保存到内存中的对象并从内存中检索它,直到需要刷新为止,最好的方法是什么?在上面的评论中解决了这个问题。小结:如果您需要在非常简单的缓存场景中保留值,您可以复制对象并通过复制新值使其无效 main() { Map cachedMap = new Map();

我让Http服务器通过HttpClient从不同的服务器加载数据。您可以在此处看到代码:


我能够加载对JSON映射的响应,现在我想把这个映射保存在内存中,直到它失效为止,我可以更快地获得关于整个集合的更改方式的信息。将我的JSON映射保存到内存中的对象并从内存中检索它,直到需要刷新为止,最好的方法是什么?

在上面的评论中解决了这个问题。小结:如果您需要在非常简单的缓存场景中保留值,您可以复制对象并通过复制新值使其无效

main() {
  Map cachedMap = new Map();
  var lastCached = new DateTime.now();
  final Duration cacheDuration = new Duration(minutes: 10);
  HttpServer.bind(InternetAddress.ANY_IP_V4, 4040).then((HttpServer server) {
    print('listening on localhost, port ${server.port}');
    server.listen((HttpRequest request) {
      var now = new DateTime.now();
      if (lastCached.add(cacheDuration).isAfter(now) && cachedMap.isNotEmpty) {
        handleMap(request, cachedMap);
      } else {
//do something to fill map
      }
      ;

    });
  }).catchError((e) => print(e.toString()));
}

你可以写一些关于缓存的书,所以这个问题非常广泛。你的具体要求是什么?你好。当然如果您看一下我上一个问题中的工作代码,我需要持久化JSOM Map parsedMap的值,并提供更多HTTP请求,这些请求不是来自loadUrlBody,而是来自这个持久化对象。对于这种简单的情况,我应该使用工厂构造函数吗?当您使用JSON作为映射时,您只需将它放在另一个映射中,URL作为键。在每次请求之前,检查URL是否已经在映射中,如果是,则获取值,如果否,则发送请求并将结果存储在映射中。我不明白这和工厂构造函数有什么关系。好吧,听起来很简单。我认为这会更复杂/正在寻找最佳实践。