From daeb90262a4820cda13e47b6e598fd30d435bd01 Mon Sep 17 00:00:00 2001 From: Julien Froidefond Date: Sun, 7 Dec 2025 11:37:20 +0100 Subject: [PATCH] refactor: optimize ServerCacheService TTL settings for paginated lists and static data to enhance caching efficiency --- PLAN_OPTIMISATION_PERFORMANCES.md | 8 ++++---- src/lib/services/server-cache.service.ts | 12 +++++++++--- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/PLAN_OPTIMISATION_PERFORMANCES.md b/PLAN_OPTIMISATION_PERFORMANCES.md index 74aeeb2..d61d802 100644 --- a/PLAN_OPTIMISATION_PERFORMANCES.md +++ b/PLAN_OPTIMISATION_PERFORMANCES.md @@ -94,10 +94,10 @@ size: "1000"; // Récupère TOUS les livres d'un coup - Routes API = dynamiques, pas besoin d'ISR - Le cache serveur suffit -- [ ] **2.4 Optimiser les TTL ServerCacheService** - - Réduire TTL des listes paginées (1-2 min) - - Garder TTL court pour les données avec progression (5 min) - - Garder TTL long pour les images (7 jours) +- [x] **2.4 Optimiser les TTL ServerCacheService** + - Réduire TTL des listes paginées (2 min) ✅ + - Garder TTL court pour les données avec progression (2 min) ✅ + - Garder TTL long pour les images (7 jours) ✅ **Résultat final :** diff --git a/src/lib/services/server-cache.service.ts b/src/lib/services/server-cache.service.ts index 1262a64..cecaed5 100644 --- a/src/lib/services/server-cache.service.ts +++ b/src/lib/services/server-cache.service.ts @@ -19,20 +19,26 @@ class ServerCacheService { }; // Configuration des temps de cache en millisecondes + private static readonly oneMinute = 1 * 60 * 1000; + private static readonly twoMinutes = 2 * 60 * 1000; private static readonly fiveMinutes = 5 * 60 * 1000; private static readonly tenMinutes = 10 * 60 * 1000; private static readonly twentyFourHours = 24 * 60 * 60 * 1000; - private static readonly oneMinute = 1 * 60 * 1000; private static readonly oneWeek = 7 * 24 * 60 * 60 * 1000; private static readonly noCache = 0; // Configuration des temps de cache + // Optimisé pour la pagination native Komga : + // - Listes paginées (SERIES, BOOKS) : TTL court (2 min) car données fraîches + progression utilisateur + // - Données agrégées (HOME) : TTL moyen (10 min) car plusieurs sources + // - Données statiques (LIBRARIES) : TTL long (24h) car changent rarement + // - Images : TTL très long (7 jours) car immuables private static readonly DEFAULT_TTL = { DEFAULT: ServerCacheService.fiveMinutes, HOME: ServerCacheService.tenMinutes, LIBRARIES: ServerCacheService.twentyFourHours, - SERIES: ServerCacheService.fiveMinutes, - BOOKS: ServerCacheService.fiveMinutes, + SERIES: ServerCacheService.twoMinutes, // Listes paginées avec progression + BOOKS: ServerCacheService.twoMinutes, // Listes paginées avec progression IMAGES: ServerCacheService.oneWeek, };