http_cache_client is a disk cache library for the dart http package It stores responses in an LRU Disk Cache depending on the http cache headers.
The supported server values inside of the http cache-control are
- max-age
- no-store
As well as the etag header.
The supported client values inside of the http cache-control are
- only-if-cached
- no-cache
- max-stale
Instead of using the generic http.get
method create an explicit http.Client which will be wrapped by the HttpCacheClient
import 'package:http_cache_client/http_cache_client.dart';
import 'package:http/http.dart' as http;
final dir = Directory((await getTemporaryDirectory()).path + "/http");
final client = http.Client().withDiskCache(DiskCache(directory: dir));
The created client should be reused on every request.
Specify the DiskCache
final cache = DiskCache(
directory,
20 * 1024 * 1024 // 20 MB cache size
);
Force reading response from cache
client.get(uri, headers: {
"cache-control": "only-if-cached"
})
Force reading response from network
client.get(uri, headers: {
"cache-control": "no-cache"
})