Pacote Dart que adiciona de forma transparente o cache de tráfego HTTP para melhorar o desempenho e reduzir a carga da rede em aplicações Dart e Flutter.
Orientação gerada a partir de informações públicas. Apenas para referência.
Um pacote Dart que melhora o desempenho do cliente HTTP ao adicionar cache transparente para requisições de rede em aplicativos Flutter e Dart. Reduz tráfego de rede redundante e melhora os tempos de resposta armazenando e reutilizando respostas HTTP com base em cabeçalhos de cache padrão. Ideal para aplicações que exigem busca eficiente de dados, como feeds de notícias, listagens de produtos ou qualquer interface baseada em API. O pacote se integra perfeitamente a clientes HTTP existentes e suporta todas as principais plataformas, incluindo Android, iOS, Linux, macOS e Windows.
Casos de uso
Armazenando em cache respostas da API para reduzir tempos de carregamento
Melhorando o desempenho do aplicativo com acesso a dados offline
Reduzindo o uso de largura de banda em aplicativos móveis
Armazenar dados frequentemente acessados localmente
Habilitar recarregamentos mais rápidos após interrupções de rede
Principais recursos
Integração contínua com o cliente http
Suporta cabeçalhos de cache HTTP padrão
Gerenciamento automático de cache
Compatibilidade multiplataforma
Leve e fácil de implementar
Indicado para
Aplicativos com chamadas de API frequentes
Aplicativos com foco em offline
Projetos Flutter críticos de desempenho
Desenvolvedores procurando soluções simples de cache
Aplicativos móveis e de desktop para múltiplas plataformas
Considerações
Requer configuração adequada de cabeçalho de cache no lado do servidor
Pode aumentar o uso de armazenamento local com o tempo
A invalidação do cache deve ser tratada com cuidado
Não adequado para dados em tempo real altamente sensíveis
Personalização limitada em comparação com frameworks de cache completos
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
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