Czy powolne, powtarzające się pobieranie danych powoduje, że Twoja aplikacja działa gorzej? Spróbuj buforować, aby rozwiązać problem.

Tworzenie szybkich i niezawodnych aplikacji internetowych jest ważniejsze niż kiedykolwiek w dzisiejszym świecie cyfrowym. Użytkownicy mają wysokie oczekiwania, jeśli chodzi o wydajność witryny. Powolne ładowanie lub przestoje mogą prowadzić do frustracji klientów i utraty reputacji.

Jednym ze sposobów uzyskania szybkich i niezawodnych aplikacji internetowych jest użycie buforowania. W aplikacji można zaimplementować różne rodzaje pamięci podręcznych, w tym pamięć podręczną w pamięci, pamięć podręczną przeglądarki, pamięć podręczną bazy danych i pamięć podręczną usługi CDN.

Co to jest buforowanie i czym różni się buforowanie w pamięci? Jak zwiększyć wydajność aplikacji Nest.js dzięki buforowaniu w pamięci?

Co to jest buforowanie?

Buforowanie to proces przechowywania często używanych danych w tymczasowej lokalizacji w celu poprawy wydajności aplikacji lub systemu. Dane z pamięci podręcznej można szybko odzyskać i udostępnić użytkownikowi bez konieczności ponownego pobierania ich z pierwotnego źródła.

instagram viewer

Aplikacje używają buforowania, aby dostarczać treści szybciej i wydajniej, co prowadzi do lepszego doświadczenia użytkownika i mniejszego obciążenia systemów bazowych. Najczęstsze typy buforowania obejmują buforowanie w pamięci, Buforowanie CDN, buforowanie przeglądarki i buforowanie bazy danych.

Co to jest buforowanie w pamięci?

Buforowanie w pamięci to rodzaj buforowania, w którym aplikacja tymczasowo przechowuje często używane dane w pamięci serwera. Zamiast wykonywać kosztowne wywołania bazy danych za każdym razem, gdy aplikacja przetwarza żądanie dostępu do danych, może pobrać te dane z pamięci.

Buforowanie danych w pamięci oznacza, że ​​aplikacja szybciej uzyskuje dostęp do danych, co skutkuje lepszą wydajnością.

Jak zaimplementować buforowanie w pamięci w aplikacji Nest.js

Nest.js ma wbudowaną obsługę buforowania przy użyciu sterowników, takich jak Redis, Memcached i wiele innych. Jednak dla ułatwienia zrozumienia w tym artykule zastosowano wbudowany moduł pamięci podręcznej, który zapewnia Nest.js.

W tej sekcji założono, że masz już aplikację Nest.js utworzoną za pomocą polecenia Nest CLI: zagnieżdż nowe [nazwa aplikacji]. Aby zaimplementować pamięć podręczną w pamięci w punkcie końcowym, powinieneś mieć już pliki modułu, usługi i kontrolera lub wygenerować je za pomocą gniazdoGenerować Komenda. Możesz dowiedzieć się więcej o generować gniazdo w Dokumentacja Nest CLI.

Pierwszym krokiem do wdrożenia pamięci podręcznej w pamięci jest zaimportowanie pliku Moduł pamięci podręcznej z @nestjs/common do modułu punktu końcowego, jak pokazano poniżej:

// przykład.moduł.ts
import { Moduł, moduł pamięci podręcznej } z'@nestjs/wspólne';

@Moduł({
importuje: [CacheModule.register()],
})

eksportklasa PrzykładModuł {}

Następnie musisz zaimportować Usługa pamięci podręcznej i wstrzyknij go do usługi Nest.js, która komunikuje się z baza danych, taka jak MongoDB. Możesz zobaczyć, jak robi to poniższy przykład kodu:

// przykład.usługa.ts
import { Do wstrzykiwań, usługa pamięci podręcznej } z'@nestjs/wspólne';

@Do wstrzykiwań()
eksportklasa PrzykładUsługa {
konstruktor(prywatny Usługa pamięci podręcznej tylko do odczytu: Usługa pamięci podręcznej) {}

asynchroniczny otrzymać dane(): Obietnica<każdy> {
konst klucz pamięci podręcznej = 'moje dane';
pozwalać dane = czekać naTen.cacheService.get (cacheKey);

Jeśli (!dane) {
// pobierz dane z bazy danych lub API
dane = czekać naTen.pobierzDane();

// buforuj dane do wykorzystania w przyszłości
czekać naTen.cacheService.set (cacheKey, dane, { ttl: 60 });
}

powrót dane;
}

prywatnyasynchroniczny pobierzDane(): Obietnica<każdy> {
// pobierz dane z bazy danych
}
}

W powyższym przykładowym kodzie plik PrzykładUsługa używa Usługa pamięci podręcznej jako zależność. The otrzymać dane metoda sprawdza, czy dane są dostępne w pamięci podręcznej za pomocą klucza (klucz pamięci podręcznej), jeśli danych nie ma w pamięci podręcznej, pobiera je z bazy danych i zapisuje w pamięci podręcznej do późniejszego wykorzystania.

The Usługa pamięci podręcznej ma ustawić Metoda, która przyjmuje obiekt jako argument. W takim przypadku możesz zobaczyć, jak wartość { ttl: 60 } ustawia czas życia na 60 sekund. Oznacza to, że usługa automatycznie usunie dane z pamięci podręcznej po jednej minucie.

Niektóre ważne zalety buforowania w pamięci obejmują:

  • Poprawiona skalowalność: Buforowanie w pamięci może pomóc poprawić skalowalność aplikacji, zmniejszając obciążenie podstawowego źródła danych.
  • Szybszy czas reakcji: Buforowanie często używanych danych w pamięci skraca czas pobierania danych, co skutkuje krótszymi czasami odpowiedzi.
  • Lepsze wrażenia użytkownika: Krótszy czas reakcji i ulepszona skalowalność mogą pomóc zapewnić lepszą obsługę użytkownika poprzez skrócenie czasu oczekiwania i poprawę ogólnej wydajności aplikacji.
  • Zmniejszone koszty: Zmniejszając obciążenie źródła danych, buforowanie w pamięci może pomóc obniżyć koszt działania aplikacji.

Optymalizacja aplikacji Nest.js z buforowaniem w pamięci

Buforowanie w pamięci to bardzo skuteczny sposób na poprawę ogólnej wydajności aplikacji. Widziałeś, jak zaimplementować pamięć podręczną w pamięci w Nest.js i jak poprawia to skalowalność i wygodę użytkownika. Może również poprawić czas odpowiedzi i obniżyć koszty obsługi aplikacji.

Spróbuj zastosować koncepcję buforowania w praktyce podczas tworzenia następnego interfejsu API lub aplikacji Nest.js.