FlutterFever Studio
Back to packages

Angel3 Cache Flutter package guide

Transparent HTTP response caching middleware for Angel3 servers.

Install command
Copy and run in your Flutter project
flutter pub add angel3_cache

When to use Angel3 Cache

Angel3 Cache is a lightweight, plug‑and‑play middleware that brings automatic HTTP response caching to Angel3, the modern Dart server framework. By intercepting outgoing responses and storing them according to configurable policies, the package eliminates redundant network trips, cuts down latency, and reduces bandwidth consumption for any client—including Flutter mobile, web, or desktop apps. The cache works at the server level, meaning you can serve cached data to every consumer without modifying client code, making it an ideal companion for API‑first architectures.

When you are building an app that frequently queries the same endpoints—such as product listings, user profiles, or configuration data—Angel3 Cache can dramatically improve perceived performance. Instead of hitting the database or an external service on every request, the middleware serves a stored copy that is still fresh enough for the user experience. This is especially valuable for low‑bandwidth environments, high‑traffic public APIs, or any scenario where you want to off‑load work from downstream services.

In a typical Flutter project that talks to an Angel3 backend, Angel3 Cache sits in the server’s request pipeline, usually right after authentication and before the route handlers. It can be combined with other Angel3 features like rate limiting, logging, or custom error handling, forming a clean, layered architecture. Because the cache lives on the server, you keep the client side simple—no extra libraries or cache‑management code are required in the Flutter app. This separation of concerns aligns well with clean architecture principles, where the data layer (the server) handles performance optimizations while the presentation layer (Flutter) remains focused on UI and state management.

Getting started is straightforward. Add the package to your server’s pubspec with the standard command, import the library, and attach the `CacheService` as middleware. You can configure a time‑to‑live (TTL) for each route, choose an in‑memory store for rapid prototyping, or plug in a persistent backend such as Redis or SQLite for production workloads. The API is intentionally minimal: a single `CacheService` instance, optional per‑route cache directives, and a clear method to purge or refresh entries when underlying data changes. This design reduces boilerplate and lets you focus on business logic.

While Angel3 Cache is powerful, it requires careful planning in production. Cache invalidation is the most common source of bugs; you should tie cache clearing to the events that mutate the source data (e.g., after a database write). Consider the security implications of caching sensitive responses—ensure that private endpoints are either excluded from caching or that the stored data is encrypted. Monitoring cache hit‑rates and size is also essential; an unbounded in‑memory cache can exhaust server resources, so configure appropriate limits or switch to a dedicated store like Redis. Finally, test your cache behavior under realistic load to verify that stale data does not leak into the user experience.

For beginners, a minimal example demonstrates the full flow: a simple Angel3 server with a `/hello` endpoint, the cache middleware attached, and a Flutter app that calls the endpoint twice. The first call hits the server logic, while the second is served instantly from the cache, illustrating the performance gain without any changes on the client side. This hands‑on approach helps developers understand both the server‑side setup and the tangible benefits they can deliver to their Flutter applications.

reduce api latency
save bandwidth on frequent requests
serve static data without hitting the database
improve offline experience for flutter apps
centralize caching logic on the server

Pros

  • transparent to clients
  • easy to configure
  • supports custom TTL per route
  • compatible with existing Angel3 middleware
  • reduces server load

Watch outs

  • must manage invalidation manually
  • in‑memory store not suitable for large datasets
  • adds another layer to server pipeline
  • no built‑in UI for monitoring

Setup notes

Run `flutter pub add angel3_cache` to add the package to your server project. Then import the library and register the middleware: ```dart import 'package:angel3_framework/angel3_framework.dart'; import 'package:angel3_cache/angel3_cache.dart'; void main() async { final app = Angel(); final cache = CacheService(ttl: Duration(minutes: 10)); app.use(cache.middleware()); // define routes … await app.startServer('localhost', 3000); } ```

Requires Dart SDK >=2.12. Compatible with Angel3 version 4.x and later. Works on any platform that supports Dart, including server deployments on Linux, macOS, and Windows. No direct Flutter integration needed, but can be used with any Flutter client that consumes the Angel3 API.

```dart
import 'package:angel3_framework/angel3_framework.dart';
import 'package:angel3_cache/angel3_cache.dart';

Future<void> main() async {
  final app = Angel();
  // Create a cache service with a 5‑minute TTL.
  final cache = CacheService(ttl: Duration(minutes: 5));

  // Attach the cache middleware to the Angel3 pipeline.
  app.use(cache.middleware());

  // Example route that returns the current time.
  app.get('/time', (req, res) async {
    return {'time': DateTime.now().toIso8601String()};
  });

  // Start the server.
  await app.startServer('0.0.0.0', 4000);
  print('Server listening on http://localhost:4000');
}
```

Official package resources