Route Cache Systeem
Deze gids leidt u door de stappen om caching te gebruiken in uw Finch applicatie routes. Caching helpt de prestaties te verbeteren door HTTP-reacties op te slaan in het geheugen of op uw bestandssysteem, waardoor de responstijd voor repetitieve verzoeken drastisch wordt verminderd.
Wat is Route Cache?
De RouteCache klasse breidt de standaard FinchRoute uit door caching mogelijkheden toe te voegen. In plaats van de route-handler voor elk verzoek uit te voeren, onderschept Finch de route en serveert de eerder gecachte reactie als deze bestaat en niet is verlopen.
Hoe Route Cache te gebruiken
Finch biedt een handige extensie op FinchRoute genaamd .cache() die uw bestaande routes eenvoudig wikkelt met caching functionaliteit.
Voorbeeld van het cachen van een basisroute:
FinchRoute(
path: '/api/data',
index: () async {
// Wat zware verwerking of database query
await Future.delayed(Duration(seconds: 2));
return Context.rq.renderJson(data: {'message': 'Zware data geladen'});
},
).cache(
cacheDuration: Duration(minutes: 5), // Cache geldig voor 5 minuten
cacheSource: CacheSource.memory, // Sla cache op in geheugen (RAM)
);
Configuratie Opties
Wanneer u .cache() aanroept (of direct een RouteCache aanmaakt), kunt u het gedrag configureren met deze eigenschappen:
cacheDuration: DeDurationwaarvoor de cachevermelding als geldig wordt beschouwd. Na deze tijd verloopt de cache en zal de originele handler opnieuw worden uitgevoerd bij het volgende verzoek. Standaard is10 minuten.cacheSource: Waar de cache wordt opgeslagen. KanCacheSource.memory(standaard) zijn voor snelle RAM-caching ofCacheSource.filevoor persistente bestandsgebaseerde caching.cacheType: Een lijst vanCacheParamdie specificeert welke delen van het verzoek de unieke cache-sleutel vormen. Standaard is[CacheParam.method, CacheParam.path].
Cache Types (CacheParam)
U kunt definiëren hoe de cache-sleutel wordt geconstrueerd door de CacheParam enum te gebruiken. Dit zorgt ervoor dat verschillende verzoeken niet per ongeluk dezelfde gecachte reactie serveren.
CacheParam.path: (Vereist) Het verzoek URI-pad (bijv./api/data).CacheParam.method: De HTTP-methode (bijv.GET,POST).CacheParam.query: De URL-queryreeks (bijv.?page=1&limit=10).CacheParam.data: De body data van het verzoek.
Voorbeeld met specifieke Cache Types:
Als u een zoek-eindpunt heeft dat queryparameters accepteert, moet u CacheParam.query opnemen in uw cacheType zodat ?q=apple en ?q=orange verschillende cachevermeldingen genereren.
FinchRoute(
path: '/search',
index: () async {
final query = Context.rq.getQuery('q');
return Context.rq.renderJson(data: {'results': 'Resultaten gevonden voor $query'});
},
).cache(
cacheType: [CacheParam.path, CacheParam.method, CacheParam.query],
);
Cache Bronnen (CacheSource)
CacheSource.memory: De cache wordt opgeslagen in een statischeMapin het geheugen. Dit is de snelste cachingmethode, maar wordt gewist als uw server opnieuw opstart.CacheSource.file: De cache wordt opgeslagen als JSON-bestanden op de lokale schijf. De map wordt bepaald doorFinchApp.config.pathCache. Dit overleeft het opnieuw opstarten van de applicatie, maar vereist schijf I/O.
Cache Beheren
U kunt alle gecachte reacties globaal in uw applicatie wissen. Dit is vooral handig tijdens applicatie-updates of datamigraties.
import 'package:finch/src/router/route_cache.dart';
void main() async {
// Wis alle cache (zowel geheugen als bestandssysteem)
await RouteCache.clearAllCache();
}
Door gebruik te maken van RouteCache, kunt u de prestaties van uw Finch-applicatie-eindpunten aanzienlijk schalen zonder complexe externe afhankelijkheden toe te voegen!