Fører treg, repeterende datahenting til at appen din ikke presterer dårligere? Prøv caching for å løse problemet.

Å bygge raske og pålitelige nettapplikasjoner er viktigere enn noen gang i dagens digitale landskap. Brukere har høye forventninger når det kommer til nettsideytelse. Langsomme lastetider eller nedetid kan føre til kundefrustrasjon og skade på omdømmet.

En måte å oppnå raske og pålitelige nettapplikasjoner på er gjennom bruk av caching. Det er forskjellige typer cacher du kan implementere i applikasjonen din, inkludert cache i minnet, nettleserbuffer, databasebuffer og CDN-hurtigbuffer.

Hva er caching, og hvordan er caching i minnet forskjellig? Hvordan kan du øke ytelsen til Nest.js-appen din med caching i minnet?

Hva er caching?

Caching er prosessen med å lagre data som ofte brukes på et midlertidig sted for å forbedre ytelsen til en applikasjon eller et system. De hurtigbufrede dataene kan raskt hentes og serveres til brukeren uten å måtte hente dem på nytt fra den opprinnelige kilden.

instagram viewer

Applikasjoner bruker caching for å levere innhold raskere og mer effektivt, noe som fører til en bedre brukeropplevelse og redusert belastning på de underliggende systemene. De vanligste typene caching inkluderer caching i minnet, CDN-bufring, nettleserbufring og databasebufring.

Hva er in-memory caching?

In-memory caching er en type caching der en applikasjon midlertidig lagrer data som ofte brukes i serverens minne. I stedet for å foreta dyre databaseanrop hver gang appen behandler en forespørsel om tilgang til data, kan den hente disse dataene fra minnet.

Å bufre dataene i minnet betyr at applikasjonen får tilgang til data raskere, og dette resulterer i forbedret ytelse.

Slik implementerer du caching i minnet i en Nest.js-applikasjon

Nest.js har innebygd støtte for caching ved hjelp av drivere som Redis, Memcached og mange flere. Men for enkel forståelse bruker denne artikkelen den innebygde minnebuffermodulen som Nest.js tilbyr.

Denne delen forutsetter at du allerede har en Nest.js-applikasjon opprettet med Nest CLI-kommandoen: nest new [appnavn]. For å implementere minnebufferen i et endepunkt, bør du ha modul-, tjeneste- og kontrollerfilene allerede, eller generere dem ved å bruke redegenerere kommando. Du kan finne ut mer om reir generere i Nest CLI-dokumentasjon.

Det første trinnet for å implementere en cache i minnet er å importere CacheModule fra @nestjs/common inn i endepunktets modul som vist nedenfor:

// example.module.ts
import { Module, CacheModule } fra'@nestjs/common';

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

eksportklasse Eksempelmodul {}

Deretter må du importere CacheService og injiser den i Nest.js-tjenesten som kommuniserer med en database som MongoDB. Du kan se hvordan følgende kodeeksempel gjør dette:

// example.service.ts
import { Injiserbar, CacheService } fra'@nestjs/common';

@Injiserbar()
eksportklasse Eksempeltjeneste {
konstruktør(privat skrivebeskyttet cacheService: CacheService) {}

asynkron getData(): Love<noen> {
konst cacheKey = 'mine_data';
la data = avventedette.cacheService.get (cacheKey);

hvis (!data) {
// hente data fra database eller API
data = avventedette.fetchData();

// hurtigbufferdata for fremtidig bruk
avventedette.cacheService.set (cacheKey, data, { ttl: 60 });
}

komme tilbake data;
}

privatasynkron fetchData(): Love<noen> {
// hente data fra databasen
}
}

I eksempelkoden ovenfor er Eksempeltjeneste bruker CacheService som en avhengighet. De getData metoden sjekker om dataene er tilgjengelige i hurtigbufferen ved hjelp av en nøkkel (cacheKey), hvis dataene ikke er i hurtigbufferen, går den videre for å hente dem fra databasen og hurtigbufre dem for senere bruk.

De CacheService har en sett metode som tar inn et objekt som et argument. I dette tilfellet kan du se hvordan verdien { ttl: 60 } setter tiden til å leve til 60 sekunder. Dette innebærer at tjenesten automatisk vil fjerne de hurtigbufrede dataene etter ett minutt.

Noen viktige fordeler med caching i minnet inkluderer følgende:

  • Forbedret skalerbarhet: Bufring i minnet kan bidra til å forbedre skalerbarheten til applikasjoner ved å redusere belastningen på den underliggende datakilden.
  • Raskere responstid: Bufring av ofte tilgang til data i minnet reduserer tiden det tar å hente dataene, noe som resulterer i raskere responstider.
  • Bedre brukeropplevelse: Raskere responstider og forbedret skalerbarhet kan bidra til å gi en bedre brukeropplevelse ved å redusere ventetiden og forbedre den generelle ytelsen til applikasjonen.
  • Reduserte kostnader: Ved å redusere belastningen på datakilden kan caching i minnet bidra til å redusere kostnadene ved å kjøre applikasjonen.

Optimalisering av Nest.js-applikasjoner med caching i minnet

Bufring i minnet er en veldig effektiv måte å forbedre den generelle applikasjonsytelsen på. Du har sett hvordan du implementerer en minnebuffer i Nest.js og hvordan den forbedrer skalerbarheten og brukeropplevelsen. Det kan også forbedre responstiden og redusere kostnadene ved å kjøre applikasjonen din.

Prøv å bruke konseptet med bufring til praktisk bruk når du bygger neste Nest.js API eller applikasjon.