Il recupero dei dati lento e ripetitivo sta causando prestazioni inferiori alla tua app? Prova a memorizzare nella cache per risolvere il problema.

La creazione di applicazioni Web veloci e affidabili è più importante che mai nel panorama digitale odierno. Gli utenti hanno grandi aspettative quando si tratta di prestazioni del sito web. Tempi di caricamento lenti o tempi di inattività possono portare alla frustrazione del cliente e danni alla reputazione.

Un modo per ottenere applicazioni Web veloci e affidabili è attraverso l'uso della memorizzazione nella cache. Esistono diversi tipi di cache che puoi implementare nella tua applicazione, tra cui cache in memoria, cache del browser, cache del database e cache CDN.

Che cos'è la memorizzazione nella cache e in che modo differisce la memorizzazione nella cache? Come puoi aumentare le prestazioni della tua applicazione Nest.js con la memorizzazione nella cache?

Cos'è la memorizzazione nella cache?

La memorizzazione nella cache è il processo di archiviazione dei dati a cui si accede di frequente in una posizione temporanea per migliorare le prestazioni di un'applicazione o di un sistema. I dati memorizzati nella cache possono essere rapidamente recuperati e serviti all'utente senza doverli recuperare nuovamente dalla fonte originale.

instagram viewer

Le applicazioni utilizzano la memorizzazione nella cache per distribuire i contenuti in modo più rapido ed efficiente, il che porta a una migliore esperienza utente ea un carico ridotto sui sistemi sottostanti. I tipi più comuni di memorizzazione nella cache includono la memorizzazione nella cache, Cache CDN, memorizzazione nella cache del browser e memorizzazione nella cache del database.

Che cos'è la memorizzazione nella cache in memoria?

La memorizzazione nella cache in memoria è un tipo di memorizzazione nella cache in cui un'applicazione memorizza temporaneamente i dati a cui si accede di frequente nella memoria del server. Invece di effettuare costose chiamate al database ogni volta che l'app elabora una richiesta di accesso ai dati, può recuperare tali dati dalla memoria.

La memorizzazione nella cache dei dati in memoria significa che l'applicazione accede ai dati più velocemente e ciò si traduce in prestazioni migliori.

Come implementare la memorizzazione nella cache in memoria in un'applicazione Nest.js

Nest.js ha il supporto integrato per la memorizzazione nella cache utilizzando driver come Redis, Memcached e molti altri. Tuttavia, per una facile comprensione, questo articolo utilizza il modulo cache di memoria integrato fornito da Nest.js.

Questa sezione presuppone che tu abbia già un'applicazione Nest.js creata con il comando Nest CLI: nest new [nome app]. Per implementare la cache in memoria in un endpoint, è necessario disporre già dei file del modulo, del servizio e del controller o generarli utilizzando il nidocreare comando. Puoi saperne di più su nido generare nel Documentazione dell'interfaccia a riga di comando di Nest.

Il primo passo per implementare una cache in memoria è importare il file CacheModule da @nestjs/comune nel modulo del tuo endpoint come mostrato di seguito:

// esempio.modulo.ts
importare { Modulo, CacheModulo } da'@nestjs/comune';

@Modulo({
importazioni: [CacheModule.register()],
})

esportareclasse EsempioModulo {}

Successivamente, è necessario importare CacheService e iniettarlo nel servizio Nest.js che comunica con a database come MongoDB. Puoi vedere come il seguente esempio di codice esegue questa operazione:

// esempio.servizio.ts
importare { Iniettabile, CacheService } da'@nestjs/comune';

@Iniettabile()
esportareclasse EsempioServizio {
costruttore(privato sola lettura cacheService: CacheService) {}

asincrono getDati(): Promettere<Qualunque> {
cost cacheKey = 'i miei dati';
permettere dati = aspettaQuesto.cacheService.get (chiave di cache);

Se (!dati) {
// recupera i dati dal database o dall'API
dati = aspettaQuesto.fetchData();

// memorizza nella cache i dati per un utilizzo futuro
aspettaQuesto.cacheService.set (cacheKey, dati, { ttl: 60 });
}

ritorno dati;
}

privatoasincrono recuperaDati(): Promettere<Qualunque> {
// recupera i dati dal database
}
}

Nel codice di esempio sopra, il EsempioService utilizza CacheService come dipendenza. IL getData metodo controlla se i dati sono disponibili nella cache utilizzando una chiave (cacheKey), se i dati non sono nella cache, procede a recuperarli dal database e li memorizza nella cache per un uso successivo.

IL CacheService ha un impostato metodo che accetta un oggetto come argomento. In questo caso, puoi vedere come il valore {ttl: 60} imposta il time-to-live a 60 secondi. Ciò implica che il servizio rimuoverà automaticamente i dati memorizzati nella cache dopo un minuto.

Alcuni importanti vantaggi della memorizzazione nella cache in memoria includono quanto segue:

  • Scalabilità migliorata: La memorizzazione nella cache in memoria può aiutare a migliorare la scalabilità delle applicazioni riducendo il carico sull'origine dati sottostante.
  • Tempi di risposta più rapidi: La memorizzazione nella cache dei dati a cui si accede di frequente riduce il tempo necessario per recuperare i dati, con tempi di risposta più rapidi.
  • Migliore esperienza utente: Tempi di risposta più rapidi e una migliore scalabilità possono aiutare a fornire una migliore esperienza utente riducendo i tempi di attesa e migliorando le prestazioni complessive dell'applicazione.
  • Costi ridotti: Riducendo il carico sull'origine dati, la memorizzazione nella cache in memoria può aiutare a ridurre i costi di esecuzione dell'applicazione.

Ottimizzazione delle applicazioni Nest.js con la memorizzazione nella cache

La memorizzazione nella cache in memoria è un modo molto efficace per migliorare le prestazioni complessive dell'applicazione. Hai visto come implementare una cache in memoria in Nest.js e come migliora la scalabilità e l'esperienza utente. Può anche migliorare i tempi di risposta e ridurre i costi di esecuzione dell'applicazione.

Prova a mettere in pratica il concetto di memorizzazione nella cache quando crei la tua prossima API o applicazione Nest.js.