Dart-Paket, das HTTP-Verkehrs-Caching nahtlos hinzufügt, um die Leistung zu verbessern und den Netzwerkverkehr in Dart- und Flutter-Anwendungen zu reduzieren.
Aus öffentlichen Paketdaten erstellte Orientierung.
Ein Dart-Paket, das die Leistung von HTTP-Clients durch transparentes Caching für Netzwerkanfragen in Flutter- und Dart-Anwendungen verbessert. Es reduziert redundanten Netzwerkverkehr und beschleunigt Antwortzeiten, indem HTTP-Antworten basierend auf Standard-Cache-Headern gespeichert und wiederverwendet werden. Ideal für Anwendungen, die eine effiziente Datenabrufung erfordern, wie Nachrichtenfeeds, Produktlisten oder beliebige API-getriebene Benutzeroberflächen. Das Paket lässt sich nahtlos mit bestehenden HTTP-Clients integrieren und unterstützt alle wichtigen Plattformen, einschließlich Android, iOS, Linux, macOS und Windows.
Anwendungsfälle
API-Antworten zwischenspeichern, um Ladezeiten zu reduzieren
Verbesserung der App-Leistung durch Offline-Datenzugriff
Bandbreitennutzung in mobilen Apps reduzieren
Häufig verwendete Daten lokal speichern
Schnellere Neuladungen nach Netzwerkunterbrechungen aktivieren
Hauptmerkmale
Nahtlose Integration mit dem HTTP-Client
Unterstützt standardmäßige HTTP-Cache-Kopfzeilen
Automatisches Cache-Management
Plattformübergreifende Kompatibilität
Leichtgewichtig und einfach zu implementieren
Geeignet für
Apps mit häufigen API-Aufrufen
Offline-first-Anwendungen
Leistungs-kritische Flutter-Projekte
Entwickler, die einfache Caching-Lösungen suchen
Mobile- und Desktop-Apps für mehrere Plattformen
Hinweise
Erfordert eine korrekte Cache-Kopfzeilen-Konfiguration auf der Serverseite
Kann im Laufe der Zeit den lokalen Speicherbedarf erhöhen
Die Cache-Invalidierung muss sorgfältig behandelt werden
Nicht geeignet für hochsensible Echtzeitdaten
Eingeschränkte Anpassungsmöglichkeiten im Vergleich zu vollständigen Caching-Frameworks
Original-README
Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.
HttpTools
A comprehensive collection of Dart and Flutter packages for HTTP request handling, providing intercepting, logging, and caching capabilities to enhance your network operations.
✅ Smart Binary Detection - Clean logs without garbage data
✅ Production Ready - Configurable for development vs production
✅ Human Readable - Clean, structured log format
Log Output Examples:
[a1b2c3d4] --> GET https://api.example.com/users/123
[a1b2c3d4] authorization: Bearer ***
[a1b2c3d4] content-type: application/json
[a1b2c3d4] --> END GET
[a1b2c3d4] <-- 200OK (145ms)
[a1b2c3d4] content-type: application/json
[a1b2c3d4] {"id": 123, "name": "John Doe"}
[a1b2c3d4] <-- END
Usage:
import'package:http_client_logger/http_client_logger.dart';
import'package:logging/logging.dart'hideLevel;
// Set up loggingLogger.root.onRecord.listen((record) => print(record.message));
// Configure loggerHttpClientProxy(
interceptors: [
HttpLogger(
level: Level.body, // basic | headers | body
logBodyContentTypes: {'application/json'}, // Only log JSON as text
),
],
)
http_client_cache
HTTP caching with disk/memory storage - Improve performance and reduce network usage
Key Features:
✅ RFC 7234 Compliant - Standard HTTP caching behavior
✅ Memory & Disk Storage - Choose what fits your needs
✅ Cache-Control Support - Respects server cache directives
✅ Stale-While-Revalidate - Serve stale content while updating
✅ Stale-If-Error - Fallback to cache when network fails
✅ Automatic Cleanup - LRU eviction and size limits
✅ Private Content Filtering - Secure handling of sensitive data
Cache Behavior Examples:
Cache miss for https://api.example.com/posts/1 # First requestCache hit for https://api.example.com/posts/1 # Served from cacheCache entry expired for https://api.example.com/posts/1 # Needs refreshServing stale content due to network error # Stale-if-error fallback
HttpClientProxy(
interceptors: [
if (kDebugMode) HttpLogger(level: Level.body), // Only log in debugAuthInterceptor(apiKey),
cache,
],
)
Custom Cache Control
classCacheControlInterceptorextendsHttpInterceptor{
@overrideFutureOr<OnResponse> onResponse(StreamedResponse response) {
final headers = Map<String, String>.from(response.headers);
// Cache API responses with resilience featuresif (response.request?.url.path.startsWith('/api/') ?? false) {
headers['cache-control'] =
'max-age=300, stale-while-revalidate=60, stale-if-error=3600';
// Cache for 5 min, serve stale for 1 min while revalidating,// serve stale for 1 hour if network fails
}
returnOnResponse.next(response.copyWith(headers: headers));
}
}
🔗 Framework Compatibility
Works seamlessly with popular HTTP packages:
✅ http - A composable, multi-platform, Future-based API for HTTP requests.
✅ chopper - An http client generator using source_gen, inspired by Retrofit
✅ retrofit - An dio client generator using source_gen and inspired by Chopper and Retrofit
Note:dio and retrofit (which uses dio) require the dio_compatibility_layer package to work with the standard http package that these interceptors depend on.
dependencies:http:^1.2.0dio_compatibility_layer:^3.0.0# Required for dio/retrofit compatibility
📊 Performance Considerations
Development vs Production:
HttpClientProxy(
interceptors: [
// Production: Only basic loggingif (kReleaseMode) HttpLogger(level: Level.basic),
// Development: Full logging with bodies if (kDebugMode) HttpLogger(level: Level.body),
// Always cache for better performance
cache,
],
)
Memory Management:
Cache automatically manages size with LRU eviction
Use cache.clearCache() when memory is low
Use cache.deletePrivateContent() when user logs out