Verursacht langsames, sich wiederholendes Abrufen von Daten die Leistung Ihrer App? Versuchen Sie Caching, um das Problem zu lösen.
Das Erstellen schneller und zuverlässiger Webanwendungen ist in der heutigen digitalen Landschaft wichtiger denn je. Benutzer haben hohe Erwartungen an die Leistung von Websites. Langsame Ladezeiten oder Ausfallzeiten können zu Kundenfrust und Reputationsschäden führen.
Eine Möglichkeit, schnelle und zuverlässige Webanwendungen zu erreichen, ist die Verwendung von Caching. Es gibt verschiedene Arten von Caches, die Sie in Ihrer Anwendung implementieren können, darunter In-Memory-Cache, Browser-Cache, Datenbank-Cache und CDN-Cache.
Was ist Caching und wie unterscheidet sich In-Memory-Caching? Wie können Sie die Leistung Ihrer Nest.js-Anwendung mit In-Memory-Caching steigern?
Was ist Caching?
Caching ist der Vorgang, häufig aufgerufene Daten an einem temporären Ort zu speichern, um die Leistung einer Anwendung oder eines Systems zu verbessern. Die zwischengespeicherten Daten können schnell abgerufen und dem Benutzer bereitgestellt werden, ohne dass sie erneut von der ursprünglichen Quelle abgerufen werden müssen.
Anwendungen verwenden Caching, um Inhalte schneller und effizienter bereitzustellen, was zu einer besseren Benutzererfahrung und einer geringeren Belastung der zugrunde liegenden Systeme führt. Die gebräuchlichsten Caching-Arten sind In-Memory-Caching, CDN-Caching, Browser-Caching und Datenbank-Caching.
Was ist In-Memory-Caching?
In-Memory-Caching ist eine Art von Caching, bei der eine Anwendung häufig aufgerufene Daten vorübergehend im Arbeitsspeicher des Servers speichert. Anstatt jedes Mal teure Datenbankaufrufe zu tätigen, wenn die App eine Anfrage zum Zugriff auf Daten verarbeitet, kann sie diese Daten aus dem Speicher abrufen.
Das Zwischenspeichern der Daten im Arbeitsspeicher bedeutet, dass die Anwendung schneller auf Daten zugreift, was zu einer verbesserten Leistung führt.
So implementieren Sie In-Memory-Caching in einer Nest.js-Anwendung
Nest.js bietet integrierte Unterstützung für das Caching mit Treibern wie Redis, Memcached und vielen mehr. Zum leichteren Verständnis verwendet dieser Artikel jedoch das integrierte Speicher-Cache-Modul, das Nest.js bereitstellt.
In diesem Abschnitt wird davon ausgegangen, dass Sie bereits eine Nest.js-Anwendung mit dem Nest-CLI-Befehl erstellt haben: Nest neu [App-Name]. Um den In-Memory-Cache in einem Endpunkt zu implementieren, sollten Sie bereits über die Modul-, Dienst- und Controller-Dateien verfügen oder sie mithilfe von generieren Nestgenerieren Befehl. Sie können mehr darüber erfahren Nest erzeugen im Nest-CLI-Dokumentation.
Der erste Schritt zum Implementieren eines In-Memory-Cache ist das Importieren der CacheModul aus @nestjs/common in das Modul Ihres Endpunkts wie unten zu sehen:
// beispiel.modul.ts
importieren {Modul, CacheModul} aus'@nestjs/common';@Modul({
importiert: [CacheModule.register()],
})
ExportKlasse BeispielModul {}
Als nächstes müssen Sie importieren CacheService und fügen Sie es in den Nest.js-Dienst ein, der mit a kommuniziert Datenbank wie MongoDB. Sie können sehen, wie das folgende Codebeispiel dies tut:
// example.service.ts
importieren { Injizierbar, CacheService } aus'@nestjs/common';@ Injizierbar()
ExportKlasse BeispielService {
Konstrukteur(Privatgelände readonly cacheService: CacheService) {}asynchron Daten bekommen(): Versprechen<beliebig> {
konst cacheKey = 'meine Daten';
lassen Daten = erwartenDas.cacheService.get (Cache-Schlüssel);Wenn (!Daten) {
// Daten aus Datenbank oder API abrufen
Daten = erwartenDas.Daten abrufen();// Cache-Daten für zukünftige Verwendung
erwartenDas.cacheService.set (cacheKey, Daten, { ttl: 60 });
}zurückkehren Daten;
}
Privatgeländeasynchron Daten abrufen(): Versprechen<beliebig> {
// Daten aus Datenbank abrufen
}
}
Im obigen Beispielcode ist die BeispielService Verwendet CacheService als Abhängigkeit. Der Daten bekommen -Methode überprüft, ob die Daten im Cache verfügbar sind, indem ein Schlüssel verwendet wird (cacheKey), wenn sich die Daten nicht im Cache befinden, werden sie aus der Datenbank abgerufen und zur späteren Verwendung zwischengespeichert.
Der CacheService hat ein Satz Methode, die ein Objekt als Argument entgegennimmt. In diesem Fall können Sie sehen, wie der Wert { ttl: 60 } setzt die Lebensdauer auf 60 Sekunden. Dies bedeutet, dass der Dienst die zwischengespeicherten Daten nach einer Minute automatisch entfernt.
Einige wichtige Vorteile des In-Memory-Caching sind die folgenden:
- Verbesserte Skalierbarkeit: In-Memory-Caching kann dazu beitragen, die Skalierbarkeit von Anwendungen zu verbessern, indem die Belastung der zugrunde liegenden Datenquelle reduziert wird.
- Schnellere Reaktionszeit: Das Zwischenspeichern von Daten, auf die häufig zugegriffen wird, im Speicher reduziert die Zeit, die zum Abrufen der Daten benötigt wird, was zu schnelleren Reaktionszeiten führt.
- Bessere Benutzererfahrung: Schnellere Reaktionszeiten und verbesserte Skalierbarkeit können dazu beitragen, ein besseres Benutzererlebnis zu bieten, indem die Wartezeit verkürzt und die Gesamtleistung der Anwendung verbessert wird.
- Reduzierte Kosten: Indem die Belastung der Datenquelle verringert wird, kann In-Memory-Caching dazu beitragen, die Kosten für die Ausführung der Anwendung zu senken.
Optimierung von Nest.js-Anwendungen mit In-Memory-Caching
In-Memory-Caching ist eine sehr effektive Möglichkeit, die allgemeine Anwendungsleistung zu verbessern. Sie haben gesehen, wie Sie einen In-Memory-Cache in Nest.js implementieren und wie er die Skalierbarkeit und Benutzererfahrung verbessert. Es kann auch die Reaktionszeit verbessern und die Kosten für den Betrieb Ihrer Anwendung senken.
Versuchen Sie, das Caching-Konzept in die Praxis umzusetzen, wenn Sie Ihre nächste Nest.js-API oder -Anwendung erstellen.