Får langsom, gentagne datahentning din app til at underperforme? Prøv at cache for at løse problemet.

Opbygning af hurtige og pålidelige webapplikationer er vigtigere end nogensinde i dagens digitale landskab. Brugere har høje forventninger, når det kommer til hjemmesidens ydeevne. Langsomme indlæsningstider eller nedetid kan føre til kundefrustration og skade på omdømmet.

En måde at opnå hurtige og pålidelige webapplikationer på er ved at bruge caching. Der er forskellige slags caches, du kan implementere i din applikation, herunder in-memory cache, browser cache, database cache og CDN cache.

Hvad er caching, og hvordan adskiller caching i hukommelsen sig? Hvordan kan du øge din Nest.js-applikations ydeevne med cachelagring i hukommelsen?

Hvad er caching?

Caching er processen med at gemme ofte tilgåede data på et midlertidigt sted for at forbedre ydeevnen af ​​en applikation eller et system. De cachelagrede data kan hurtigt hentes og serveres til brugeren uden at skulle hente dem igen fra den originale kilde.

instagram viewer

Applikationer bruger caching til at levere indhold hurtigere og mere effektivt, hvilket fører til en bedre brugeroplevelse og reduceret belastning på de underliggende systemer. De mest almindelige typer caching omfatter caching i hukommelsen, CDN-cache, browsercaching og databasecaching.

Hvad er In-Memory Caching?

In-memory caching er en type caching, hvor en applikation midlertidigt gemmer ofte tilgåede data i serverens hukommelse. I stedet for at foretage dyre databasekald, hver gang appen behandler en anmodning om at få adgang til data, kan den hente disse data fra hukommelsen.

Caching af data i hukommelsen betyder, at applikationen får hurtigere adgang til data, og dette resulterer i forbedret ydeevne.

Sådan implementeres In-Memory Caching i en Nest.js-applikation

Nest.js har indbygget understøttelse af caching ved hjælp af drivere som Redis, Memcached og mange flere. Men for nem forståelse bruger denne artikel det indbyggede hukommelsescache-modul, som Nest.js leverer.

Dette afsnit antager, at du allerede har en Nest.js-applikation, der er oprettet med Nest CLI-kommandoen: nest new [appnavn]. For at implementere cachen i hukommelsen i et slutpunkt skal du allerede have modul-, service- og controllerfilerne eller generere dem ved hjælp af redefrembringe kommando. Du kan få mere at vide om rede generere i Nest CLI-dokumentation.

Det første skridt til at implementere en in-memory cache er at importere Cachemodul fra @nestjs/common ind i dit slutpunkts modul som vist nedenfor:

// eksempel.modul.ts
importere { Modul, CacheModule } fra'@nestjs/common';

@Modul({
importerer: [CacheModule.register()],
})

eksportklasse Eksempelmodul {}

Dernæst skal du importere CacheService og injicer det i Nest.js-tjenesten, der kommunikerer med en database som MongoDB. Du kan se, hvordan følgende kodeeksempel gør dette:

// example.service.ts
importere { Injicerbar, CacheService } fra'@nestjs/common';

@Injicerbar()
eksportklasse EksempelService {
konstruktør(privat readonly cacheService: CacheService) {}

asynkron getData(): Løfte<nogen> {
konst cacheKey = 'mine_data';
lade data = ventedet her.cacheService.get (cacheKey);

hvis (!data) {
// hent data fra database eller API
data = ventedet her.fetchData();

// cache data til fremtidig brug
ventedet her.cacheService.set (cacheKey, data, { ttl: 60 });
}

Vend tilbage data;
}

privatasynkron fetchData(): Løfte<nogen> {
// hente data fra databasen
}
}

I eksempelkoden ovenfor er Eksempeltjeneste bruger CacheService som en afhængighed. Det getData metoden kontrollerer, om dataene er tilgængelige i cachen ved hjælp af en nøgle (cacheNøgle), hvis dataene ikke er i cachen, fortsætter den med at hente dem fra databasen og cachere dem til senere brug.

Det CacheService har en sæt metode, der tager et objekt ind som et argument. I dette tilfælde kan du se, hvordan værdien { ttl: 60 } indstiller tiden til at leve til 60 sekunder. Dette indebærer, at tjenesten automatisk fjerner de cachelagrede data efter et minut.

Nogle vigtige fordele ved caching i hukommelsen inkluderer følgende:

  • Forbedret skalerbarhed: In-memory caching kan hjælpe med at forbedre skalerbarheden af ​​applikationer ved at reducere belastningen på den underliggende datakilde.
  • Hurtigere responstid: Caching af ofte tilgåede data i hukommelsen reducerer den tid, det tager at hente dataene, hvilket resulterer i hurtigere svartider.
  • Bedre brugeroplevelse: Hurtigere svartider og forbedret skalerbarhed kan hjælpe med at give en bedre brugeroplevelse ved at reducere ventetiden og forbedre applikationens overordnede ydeevne.
  • Reducerede omkostninger: Ved at reducere belastningen på datakilden kan caching i hukommelsen hjælpe med at reducere omkostningerne ved at køre applikationen.

Optimering af Nest.js-applikationer med cachelagring i hukommelsen

In-memory caching er en meget effektiv måde at forbedre den overordnede applikationsydelse. Du har set, hvordan man implementerer en cache i hukommelsen i Nest.js, og hvordan det forbedrer skalerbarheden og brugeroplevelsen. Det kan også forbedre responstiden og reducere omkostningerne ved at køre din applikation.

Prøv at bruge konceptet caching til praktisk brug, når du bygger din næste Nest.js API eller applikation.