La récupération lente et répétitive des données entraîne-t-elle une sous-performance de votre application? Essayez la mise en cache pour résoudre le problème.

La création d'applications Web rapides et fiables est plus importante que jamais dans le paysage numérique d'aujourd'hui. Les utilisateurs ont des attentes élevées en matière de performances du site Web. Des temps de chargement lents ou des temps d'arrêt peuvent entraîner la frustration des clients et nuire à leur réputation.

L'utilisation de la mise en cache est l'un des moyens de créer des applications Web rapides et fiables. Il existe différents types de caches que vous pouvez implémenter dans votre application, y compris le cache en mémoire, le cache du navigateur, le cache de la base de données et le cache CDN.

Qu'est-ce que la mise en cache et en quoi la mise en cache en mémoire diffère-t-elle? Comment augmenter les performances de votre application Nest.js avec la mise en cache en mémoire ?

Qu'est-ce que la mise en cache?

La mise en cache est le processus de stockage des données fréquemment consultées dans un emplacement temporaire pour améliorer les performances d'une application ou d'un système. Les données mises en cache peuvent être rapidement récupérées et servies à l'utilisateur sans avoir à les récupérer à nouveau à partir de la source d'origine.

Les applications utilisent la mise en cache pour fournir du contenu plus rapidement et plus efficacement, ce qui améliore l'expérience utilisateur et réduit la charge sur les systèmes sous-jacents. Les types de mise en cache les plus courants incluent la mise en cache en mémoire, Mise en cache CDN, la mise en cache du navigateur et la mise en cache de la base de données.

Qu'est-ce que la mise en cache en mémoire?

La mise en cache en mémoire est un type de mise en cache dans lequel une application stocke temporairement les données fréquemment consultées dans la mémoire du serveur. Au lieu de faire des appels coûteux à la base de données chaque fois que l'application traite une demande d'accès aux données, elle peut récupérer ces données dans la mémoire.

La mise en cache des données en mémoire signifie que l'application accède aux données plus rapidement, ce qui améliore les performances.

Comment implémenter la mise en cache en mémoire dans une application Nest.js

Nest.js prend en charge la mise en cache à l'aide de pilotes tels que Redis, Memcached et bien d'autres. Cependant, pour faciliter la compréhension, cet article utilise le module de cache mémoire intégré fourni par Nest.js.

Cette section part du principe que vous disposez déjà d'une application Nest.js créée avec la commande Nest CLI: imbriquer nouveau [nom de l'application]. Pour implémenter le cache en mémoire dans un point de terminaison, vous devez déjà disposer des fichiers de module, de service et de contrôleur, ou les générer à l'aide de la commande nidgénérer commande. Vous pouvez en savoir plus sur nid générer dans le Documentation de l'interface de ligne de commande Nest.

La première étape pour implémenter un cache en mémoire consiste à importer le CacheModule depuis @nestjs/commun dans le module de votre point de terminaison comme indiqué ci-dessous :

// exemple.module.ts
importer {Module, CacheModule} depuis'@nestjs/commun';

@Module({
importe: [CacheModule.register()],
})

exporterclasse ExempleModule {}

Ensuite, vous devez importer CacheService et l'injecter dans le service Nest.js qui communique avec un base de données comme MongoDB. Vous pouvez voir comment l'exemple de code suivant procède :

// exemple.service.ts
importer {Injectable, CacheService} depuis'@nestjs/commun';

@Injectable()
exporterclasse ExempleService {
constructeur(privé cacheService en lecture seule: CacheService) {}

asynchrone getData(): Promesse<n'importe quel> {
constante cacheKey = 'mes données';
laisser données = attendrece.cacheService.get (cacheKey);

si (!données) {
// récupère les données de la base de données ou de l'API
données = attendrece.fetchData();

// cache les données pour une utilisation future
attendrece.cacheService.set (cacheKey, données, { ttl: 60 });
}

retour données;
}

privéasynchrone récupérerDonnées(): Promesse<n'importe quel> {
// récupère les données de la base de données
}
}

Dans l'exemple de code ci-dessus, le ExempleService les usages CacheService comme dépendance. Le getData La méthode vérifie si les données sont disponibles dans le cache à l'aide d'une clé (cacheKey), si les données ne sont pas dans le cache, il les récupère dans la base de données et les met en cache pour une utilisation ultérieure.

Le CacheService a un ensemble méthode qui prend un objet en argument. Dans ce cas, vous pouvez voir comment la valeur { ttl: 60 } fixe la durée de vie à 60 secondes. Cela implique que le service supprimera automatiquement les données mises en cache après une minute.

Voici quelques avantages importants de la mise en cache en mémoire :

  • Évolutivité améliorée : La mise en cache en mémoire peut aider à améliorer l'évolutivité des applications en réduisant la charge sur la source de données sous-jacente.
  • Temps de réponse plus rapide : La mise en cache des données fréquemment consultées dans la mémoire réduit le temps nécessaire pour récupérer les données, ce qui se traduit par des temps de réponse plus rapides.
  • Meilleure expérience utilisateur : Des temps de réponse plus rapides et une évolutivité améliorée peuvent contribuer à offrir une meilleure expérience utilisateur en réduisant le temps d'attente et en améliorant les performances globales de l'application.
  • Coûts réduits : En réduisant la charge sur la source de données, la mise en cache en mémoire peut aider à réduire le coût d'exécution de l'application.

Optimiser les applications Nest.js avec la mise en cache en mémoire

La mise en cache en mémoire est un moyen très efficace d'améliorer les performances globales des applications. Vous avez vu comment implémenter un cache en mémoire dans Nest.js et comment cela améliore l'évolutivité et l'expérience utilisateur. Cela peut également améliorer le temps de réponse et réduire les coûts d'exécution de votre application.

Essayez de mettre en pratique le concept de mise en cache lors de la création de votre prochaine API ou application Nest.js.