managerr/frontend/src/services/cacheService.js
2025-07-21 16:38:07 +02:00

69 lines
1.5 KiB
JavaScript

// services/cacheService.js
// Service pour gérer la mise en cache des données
class CacheService {
constructor() {
this.cache = {};
this.defaultTTL = 5 * 60 * 1000; // 5 minutes en millisecondes
}
/**
* Récupère une entrée en cache
* @param {string} key - La clé de l'entrée
* @returns {Object|null} - L'entrée ou null si non trouvée ou expirée
*/
get(key) {
const item = this.cache[key];
if (!item) return null;
// Vérifier si l'entrée est expirée
if (Date.now() > item.expiry) {
// Suppression automatique des entrées expirées
delete this.cache[key];
return null;
}
return item.value;
}
/**
* Ajoute une entrée dans le cache
* @param {string} key - La clé de l'entrée
* @param {any} value - La valeur à stocker
* @param {number} ttl - Durée de vie en millisecondes (par défaut: 5 minutes)
*/
set(key, value, ttl = this.defaultTTL) {
this.cache[key] = {
value,
expiry: Date.now() + ttl
};
}
/**
* Vérifie si une entrée existe et est valide
* @param {string} key - La clé de l'entrée
* @returns {boolean} - Vrai si l'entrée existe et n'est pas expirée
*/
has(key) {
return this.get(key) !== null;
}
/**
* Supprime une entrée du cache
* @param {string} key - La clé de l'entrée
*/
invalidate(key) {
delete this.cache[key];
}
/**
* Vide tout le cache
*/
clear() {
this.cache = {};
}
}
// Export d'une instance singleton
export default new CacheService();