routed_cache

Routed adapter for server_cache — the framework-agnostic cache runtime (DataCacheManager, Repository, Store).

Wraps server_cache (array/file/redis/null stores, DataCacheManager, Repository) for routed EngineContext via ContextCache extension (ctx.cache/getCache/removeCache/cacheForever/rememberCache*/incrementCache/decrementCache) and Store middleware/provider.

Install

dependencies:
  routed: ^0.5.0
  routed_core: ^0.5.0
  routed_cache: ^0.2.0
  server_cache: ^0.2.0

Usage

import 'package:routed_core/routed_core.dart';
import 'package:routed_cache/routed_cache.dart';
import 'package:server_cache/server_cache.dart';

void main() async {
  final store = ArrayStore();
  final cacheManager = DataCacheManager()
    ..registerStore('array', store);

  final engine = await Engine.create(
    providers: [
      ...Engine.defaultProviders,
      RoutedCacheProvider(CacheConfig(store: store)),
    ],
    options: [withCacheManager(cacheManager)],
  );

  engine.get('/', (ctx) async {
    await ctx.cache('greeting', 'hello', 60);
    final value = await ctx.getCache('greeting'); // pull semantics (get+delete)
    await ctx.cacheForever('forever', 'permanent');
    final remembered = await ctx.rememberCacheForever('once', () => 'computed');
    return ctx.json({'value': value, 'remembered': remembered});
  });

  // Add this when handlers need ctx.cacheStore or ctx.hasCache.
  engine.use(cacheMiddleware(store));

  await engine.serve();
}

See the runnable example in the package's example directory.

Testing

dart test packages/routed_cache
dart analyze --fatal-infos packages/routed_cache/lib

Libraries

routed_cache
Typed Routed integration for the framework-neutral server_cache runtime.