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.
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.