CachingHttpClientHive class
A persistent disk implementation of CachingHttpClient for GET requests using hive_ce.
Stores HTTP responses on disk in a Hive Box, retaining cache state across application restarts.
CAUTION for Cloud Run & Serverless environments:
In Cloud Run or Cloud Functions, the local filesystem (e.g. /tmp) is an ephemeral in-memory filesystem (tmpfs).
Writing files to local disk in Cloud Run directly consumes container RAM! Unless an external volume
(such as Cloud Storage Volume Mount or Cloud Filestore NFS) is mounted, setting a large maxSizeBytes
may cause Out-Of-Memory (OOM) errors. Use appropriate limits or mount a persistent volume.
Default parameters:
- maxSizeBytes: 500 MB.
- maxEntrySizeBytes: 2 MB (covers 99% of Firestore REST documents).
- ttl: 30 minutes.
- cacheCheckPeriod: 10 minutes.
Cloud Run RAM presets:
- Light container (512 MB – 1 GB RAM): maxSizeBytes = 50 MB – 100 MB.
- Standard server (2 GB RAM): maxSizeBytes = 250 MB – 500 MB.
- Heavy server (4 GB+ RAM): maxSizeBytes = 500 MB – 1 GB.
- Inheritance
-
- Object
- CachingHttpClient
- CachingHttpClientHive
Constructors
- CachingHttpClientHive({required Box box, Client? inner, Duration ttl = const Duration(minutes: 30), int maxEntrySizeBytes = 2 * 1024 * 1024, int maxSizeBytes = 50 * 1024 * 1024, Duration cacheCheckPeriod = const Duration(minutes: 10), CacheInvalidationStrategy invalidationStrategy = CacheInvalidationStrategy.smart, void onCacheHit(String url, CacheStats stats)?})
Properties
- activeInnerClient → Client
-
Returns active inner HTTP client or throws StateError if missing.
no setterinherited
- cacheCheckPeriod ↔ Duration
-
Interval between automatic cleanup sweeps of expired cache entries.
getter/setter pairinherited
- cacheCount → int
-
Returns the current number of cached entries.
no setteroverride
- currentSizeBytes ↔ int
-
Total size in bytes of all currently cached responses.
getter/setter pairinherited
- hashCode → int
-
The hash code for this object.
no setterinherited
- inner ↔ Client?
-
Underlying HTTP client instance.
getter/setter pairinherited
- invalidationStrategy ↔ CacheInvalidationStrategy
-
Strategy used to invalidate cache when mutating HTTP requests occur.
getter/setter pairinherited
- lastCleanupTime ↔ DateTime
-
Timestamp of the last expired cache entries cleanup sweep.
getter/setter pairinherited
- maxEntrySizeBytes ↔ int
-
Maximum byte size allowed for a single cached response.
Responses exceeding this limit will not be cached.
getter/setter pairinherited
- maxSizeBytes ↔ int
-
Maximum total byte size allowed for all cached responses combined.
getter/setter pairinherited
- onCacheHit → void Function(String url, CacheStats stats)?
-
Optional callback triggered when a request hits the cache, passing the request URL and current cache stats.
finalinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- stats → CacheStats
-
Statistics for cache operations (hits, misses, ratios).
finalinherited
- ttl ↔ Duration
-
Duration for which cached responses remain valid.
getter/setter pairinherited
Methods
-
clearCache(
) → Future< void> -
Manually clears all cached responses.
override
-
close(
) → void -
Closes the client and cleans up any resources associated with it.
inherited
-
delete(
Uri url, {Map< String, String> ? headers, Object? body, Encoding? encoding}) → Future<Response> -
Sends an HTTP DELETE request with the given headers to the given URL.
inherited
-
get(
Uri url, {Map< String, String> ? headers}) → Future<Response> -
Sends an HTTP GET request with the given headers to the given URL.
inherited
-
head(
Uri url, {Map< String, String> ? headers}) → Future<Response> -
Sends an HTTP HEAD request with the given headers to the given URL.
inherited
-
invalidateUrl(
String urlOrPrefix) → void -
Removes a specific URL or all URLs matching a path prefix from the cache.
override
-
isMutatingRequest(
BaseRequest request) → bool -
Determines if an HTTP request is mutating (writes/updates/deletes data).
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
patch(
Uri url, {Map< String, String> ? headers, Object? body, Encoding? encoding}) → Future<Response> -
Sends an HTTP PATCH request with the given headers and body to the given
URL.
inherited
-
post(
Uri url, {Map< String, String> ? headers, Object? body, Encoding? encoding}) → Future<Response> -
Sends an HTTP POST request with the given headers and body to the given
URL.
inherited
-
put(
Uri url, {Map< String, String> ? headers, Object? body, Encoding? encoding}) → Future<Response> -
Sends an HTTP PUT request with the given headers and body to the given
URL.
inherited
-
read(
Uri url, {Map< String, String> ? headers}) → Future<String> -
Sends an HTTP GET request with the given headers to the given URL and
returns a Future that completes to the body of the response as a String.
inherited
-
readBytes(
Uri url, {Map< String, String> ? headers}) → Future<Uint8List> -
Sends an HTTP GET request with the given headers to the given URL and
returns a Future that completes to the body of the response as a list of
bytes.
inherited
-
send(
BaseRequest request) → Future< StreamedResponse> - Sends an HTTP request and asynchronously returns the response.
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited