2014-06-18 3 views
0

HttpClient를 통해 다른 서버의 데이터를로드하는 Http 서버가 있습니다. 여기에 코드를 볼 수 있습니다 : Dart HTTP server and Futures다트 HttpServer 캐시

JSON 맵에 대한 응답을로드 할 수 있고 이제 무효화 될 때까지이 맵을 메모리에 보관할 수 있습니다. (전체 설정 변경 방법에 대한 정보를 더 빨리 얻을 수 있습니다.) 내 JSON 맵을 메모리 객체에 저장하고 리프레시해야 할 때까지 메모리에서 검색하는 가장 좋은 방법은 무엇입니까?

+0

캐싱에 대한 책을 쓸 수 있으므로이 질문은 매우 광범위합니다. 구체적인 요구 사항은 무엇입니까? –

+0

안녕하세요. 확실한. 마지막 질문에서 작업 코드를 살펴보면 JSom Map parsedMap의 값을 유지하고 loadUrlBody()가 아닌이 지속 된 객체의 HTTP 요청을 처리해야합니다. –

+0

그런 간단한 경우에 팩토리 생성자를 사용해야합니까? https://www.dartlang.org/articles/idiomatic-dart/#factory-constructors –

답변

0

위의 의견으로 해결되었습니다. 요약 : 매우 간단한 "캐시"시나리오에서 가치를 유지해야하는 경우 새 값을 복사하여 개체 복사본을 무효화 할 수 있습니다.

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())); 
}