давайте углубимся в кэширование в NestJS 🚀
Кэширование является важным аспектом любого веб-приложения. Это помогает повысить производительность и скорость отклика вашего приложения за счет сохранения и повторного использования результатов дорогостоящих операций.
В этом уроке мы узнаем, как реализовать кэширование в вашем приложении NestJS, используя встроенные функции кэширования.
- Установите пакет кэширования: установите пакет
cache-manager
и его типизацию:
npm install --save cache-manager npm install --save-dev @types/cache-manager
- Импортируйте CacheModule: в
app.module.ts
импортируйтеCacheModule
и настройте для него стратегию кэширования, которую вы хотите использовать. Например, вы можете использовать кэш в памяти:
import { Module } from '@nestjs/common'; import { CacheModule } from '@nestjs/common'; @Module({ imports: [ CacheModule.register({ store: 'memory', max: 100, // maximum number of items in cache ttl: 60, // time-to-live in seconds }), ], }) export class AppModule {}
- Внедрите CacheManager: в свои службы внедрите
CacheManager
с помощью декоратора@Inject()
:
import { Injectable, Inject, CACHE_MANAGER } from '@nestjs/common'; import { Cache } from 'cache-manager'; @Injectable() export class SomeService { constructor(@Inject(CACHE_MANAGER) private cacheManager: Cache) {} // Your service logic here. }
- Используйте CacheManager для кэширования данных: используйте экземпляр
cacheManager
для хранения и извлечения кэшированных данных. Например, вы можете кэшировать результат HTTP-запроса:
async getData(): Promise<any> { const cachedData = await this.cacheManager.get('data_key'); if (cachedData) { return cachedData; } const fetchedData = await this.httpService.get('https://api.example.com/data').toPromise(); await this.cacheManager.set('data_key', fetchedData, { ttl: 60 }); return fetchedData; }
- CacheInterceptor: вы также можете использовать
CacheInterceptor
для автоматического кэширования результатов действий контроллера. Для этого добавьте перехватчик в свой контроллер:
import { Controller, Get, UseInterceptors } from '@nestjs/common'; import { CacheInterceptor } from '@nestjs/common'; @Controller('data') @UseInterceptors(CacheInterceptor) export class DataController { @Get() getData() { // Your data fetching logic here. } }
Вот и все! Теперь вы реализовали кэширование в своем приложении NestJS 🎉 Это поможет повысить производительность вашего приложения за счет уменьшения потребности в дорогостоящих операциях и снижения нагрузки на ваш сервер.