Zorgt het trage, herhaalde ophalen van gegevens ervoor dat uw app ondermaats presteert? Probeer caching om het probleem op te lossen.
Het bouwen van snelle en betrouwbare webapplicaties is belangrijker dan ooit in het huidige digitale landschap. Gebruikers hebben hoge verwachtingen als het gaat om de prestaties van de website. Trage laadtijden of downtime kunnen leiden tot frustratie bij klanten en reputatieschade.
Een manier om tot snelle en betrouwbare webapplicaties te komen, is door gebruik te maken van caching. Er zijn verschillende soorten caches die u in uw toepassing kunt implementeren, waaronder cache in het geheugen, browsercache, databasecache en CDN-cache.
Wat is caching en hoe verschilt in-memory caching? Hoe kunt u de prestaties van uw Nest.js-applicatie verbeteren met in-memory caching?
Wat is cachen?
Caching is het proces waarbij veelgebruikte gegevens op een tijdelijke locatie worden opgeslagen om de prestaties van een applicatie of systeem te verbeteren. De in de cache opgeslagen gegevens kunnen snel worden opgehaald en aan de gebruiker worden aangeboden zonder deze opnieuw uit de oorspronkelijke bron te hoeven halen.
Applicaties gebruiken caching om content sneller en efficiënter te leveren, wat leidt tot een betere gebruikerservaring en minder belasting van de onderliggende systemen. De meest voorkomende vormen van caching zijn in-memory caching, CDN-caching, browsercaching en databasecaching.
Wat is in-memory caching?
In-memory caching is een vorm van caching waarbij een toepassing tijdelijk vaak gebruikte gegevens opslaat in het geheugen van de server. In plaats van elke keer dat de app een verzoek om toegang tot gegevens verwerkt dure database-oproepen te doen, kan het die gegevens uit het geheugen halen.
Door de gegevens in het geheugen te cachen, heeft de toepassing sneller toegang tot gegevens, wat resulteert in verbeterde prestaties.
In-Memory Caching implementeren in een Nest.js-toepassing
Nest.js heeft ingebouwde ondersteuning voor caching met behulp van stuurprogramma's zoals Redis, Memcached en nog veel meer. Voor een beter begrip gebruikt dit artikel echter de ingebouwde geheugencachemodule die Nest.js biedt.
In dit gedeelte wordt ervan uitgegaan dat u al een Nest.js-toepassing hebt gemaakt met de Nest CLI-opdracht: nest nieuwe [naam app]. Om de in-memory cache in een endpoint te implementeren, moet u de module-, service- en controllerbestanden al hebben of deze genereren met behulp van de nestgenereren commando. U kunt er meer over vinden nest genereren in de Nest CLI-documentatie.
De eerste stap om een cache in het geheugen te implementeren, is het importeren van het Cache-module van @nestjs/common in de module van uw eindpunt zoals hieronder te zien is:
// voorbeeld.module.ts
importeren { Module, CacheModule } van'@nestjs/common';@module({
invoer: [CacheModule.register()],
})
exporterenklas VoorbeeldModule {}
Vervolgens moet u importeren CacheService en injecteer het in de Nest.js-service die communiceert met een database zoals MongoDB. U kunt zien hoe het volgende codevoorbeeld dit doet:
// voorbeeld.service.ts
importeren { Injecteerbaar, CacheService } van'@nestjs/common';@Injecteerbaar()
exporterenklas VoorbeeldDienst {
constructeur(privaat alleen-lezen cacheService: CacheService) {}asynchroon gegevens verkrijgen(): Belofte<elk> {
const cacheSleutel = 'mijn data';
laten gegevens = wachtendit.cacheService.get (cacheKey);als (!gegevens) {
// gegevens ophalen uit database of API
gegevens = wachtendit.fetchData();// cachegegevens voor toekomstig gebruik
wachtendit.cacheService.set (cacheKey, gegevens, { ttl: 60 });
}opbrengst gegevens;
}
privaatasynchroon gegevens ophalen(): Belofte<elk> {
// haal gegevens op uit de database
}
}
In de bovenstaande voorbeeldcode is de VoorbeeldService toepassingen CacheService als afhankelijkheid. De gegevens verkrijgen methode controleert of de gegevens beschikbaar zijn in de cache met behulp van een sleutel (cacheSleutel), als de gegevens zich niet in de cache bevinden, gaat het door om deze uit de database op te halen en in de cache op te slaan voor later gebruik.
De CacheService heeft een set methode die een object als argument opneemt. In dit geval kunt u zien hoe de waarde { ttl: 60 } stelt de time-to-live in op 60 seconden. Dit houdt in dat de service de gegevens in de cache na een minuut automatisch verwijdert.
Enkele belangrijke voordelen van in-memory caching zijn de volgende:
- Verbeterde schaalbaarheid: In-memory caching kan de schaalbaarheid van applicaties helpen verbeteren door de belasting van de onderliggende gegevensbron te verminderen.
- Snellere responstijd: Door veelgebruikte gegevens in het geheugen in de cache op te slaan, wordt de tijd die nodig is om de gegevens op te halen, verkort, wat resulteert in snellere reactietijden.
- Betere gebruikerservaring: Snellere responstijden en verbeterde schaalbaarheid kunnen helpen om een betere gebruikerservaring te bieden door de wachttijd te verkorten en de algehele prestaties van de applicatie te verbeteren.
- Lagere kosten: Door de belasting van de gegevensbron te verminderen, kan in-memory caching helpen de kosten van het uitvoeren van de toepassing te verlagen.
Nest.js-applicaties optimaliseren met in-memory caching
In-memory caching is een zeer effectieve manier om de algehele applicatieprestaties te verbeteren. Je hebt gezien hoe je een cache in het geheugen implementeert in Nest.js en hoe dit de schaalbaarheid en gebruikerservaring verbetert. Het kan ook de responstijd verbeteren en de kosten voor het uitvoeren van uw toepassing verlagen.
Probeer het concept van caching praktisch toe te passen bij het bouwen van uw volgende Nest.js API of applicatie.