آیا واکشی آهسته و مکرر داده باعث عملکرد ضعیف برنامه شما می شود؟ برای حل مشکل، کش را امتحان کنید.
ساخت برنامه های کاربردی وب سریع و قابل اعتماد بیش از هر زمان دیگری در چشم انداز دیجیتال امروزی اهمیت دارد. وقتی صحبت از عملکرد وب سایت می شود، کاربران انتظارات بالایی دارند. زمان بارگذاری کند یا خرابی می تواند منجر به ناامیدی مشتری و آسیب به اعتبار شود.
یکی از راه های دستیابی به برنامه های کاربردی وب سریع و قابل اعتماد، استفاده از کش است. انواع مختلفی از کش ها وجود دارد که می توانید در برنامه خود پیاده سازی کنید، از جمله کش درون حافظه، کش مرورگر، کش پایگاه داده و کش CDN.
کش چیست و کش در حافظه چه تفاوتی دارد؟ چگونه می توانید عملکرد برنامه Nest.js خود را با کش در حافظه افزایش دهید؟
Caching چیست؟
حافظه پنهان فرآیند ذخیره سازی داده های مکرر در یک مکان موقت برای بهبود عملکرد یک برنامه یا سیستم است. داده های کش را می توان به سرعت بازیابی کرد و بدون نیاز به بازیابی مجدد از منبع اصلی به کاربر ارائه کرد.
برنامهها از حافظه پنهان برای ارائه سریعتر و کارآمدتر محتوا استفاده میکنند که منجر به تجربه کاربری بهتر و کاهش بار روی سیستمهای زیربنایی میشود. رایج ترین انواع کش عبارتند از: کش در حافظه، کش CDN، کش مرورگر و کش پایگاه داده.
کش در حافظه چیست؟
کش در حافظه نوعی از کش است که در آن یک برنامه به طور موقت داده هایی را که اغلب به آنها دسترسی دارند در حافظه سرور ذخیره می کند. به جای برقراری تماس های گران قیمت با پایگاه داده هر بار که برنامه درخواستی برای دسترسی به داده ها را پردازش می کند، می تواند آن داده ها را از حافظه واکشی کند.
کش کردن داده ها در حافظه به این معنی است که برنامه سریعتر به داده ها دسترسی پیدا می کند و این منجر به بهبود عملکرد می شود.
نحوه پیاده سازی حافظه پنهان در یک برنامه Nest.js
Nest.js دارای پشتیبانی داخلی برای ذخیره سازی با استفاده از درایورهایی مانند Redis، Memcached و بسیاری موارد دیگر است. با این حال، برای درک آسان، این مقاله از ماژول کش حافظه داخلی که Nest.js ارائه می کند استفاده می کند.
این بخش فرض میکند که شما قبلاً یک برنامه Nest.js دارید که با دستور Nest CLI ایجاد شده است: nest new [app name]. برای پیاده سازی حافظه نهان در یک نقطه پایانی، باید فایل های ماژول، سرویس و کنترلر را از قبل داشته باشید یا با استفاده از دستور nest generate آنها را تولید کنید. میتوانید در مستندات Nest CLI درباره Nest Generation اطلاعات بیشتری کسب کنید.
اولین گام برای پیاده سازی یک کش در حافظه، وارد کردن CacheModule از @nestjs/common به ماژول نقطه پایانی است که در زیر مشاهده می کنید:
// example.module.ts
import { Module, CacheModule } from '@nestjs/common';
@Module({
imports: [CacheModule.register()],
})
export class ExampleModule {}
در مرحله بعد، باید CacheService را وارد کنید و آن را به سرویس Nest.js تزریق کنید که با پایگاه داده ای مانند MongoDB ارتباط برقرار می کند. می توانید ببینید که چگونه مثال کد زیر این کار را انجام می دهد:
// example.service.ts
import { Injectable, CacheService } from '@nestjs/common';
@Injectable()
export class ExampleService {
constructor(private readonly cacheService: CacheService) {}
async getData(): Promise<any> {
const cacheKey = 'my_data';
let data = await this.cacheService.get(cacheKey);
if (!data) {
// fetch data from database or API
data = await this.fetchData();
// cache data for future use
await this.cacheService.set(cacheKey, data, { ttl: 60 });
}
return data;
}
private async fetchData(): Promise<any> {
// fetch data from database
}
}
در کد مثال بالا، ExampleService از CacheService به عنوان یک وابستگی استفاده می کند. متد getData بررسی میکند که آیا دادهها در حافظه پنهان با استفاده از یک کلید (cacheKey) موجود است یا خیر، اگر دادهها در حافظه پنهان نیستند، آنها را از پایگاه داده واکشی میکند و برای استفاده بعدی ذخیره میکند.
CacheService یک متد مجموعه ای دارد که یک شی را به عنوان آرگومان می گیرد. در این حالت، میتوانید ببینید که چگونه مقدار {ttl: 60 } زمان را روی 60 ثانیه تنظیم میکند. این بدان معنی است که سرویس پس از یک دقیقه به طور خودکار داده های کش را حذف می کند.
برخی از مزایای مهم کش در حافظه عبارتند از:
- مقیاس پذیری بهبود یافته: کش در حافظه می تواند با کاهش بار روی منبع داده زیربنایی، به بهبود مقیاس پذیری برنامه ها کمک کند.
- زمان پاسخگویی سریعتر: ذخیره اطلاعاتی که به طور مکرر به آنها دسترسی پیدا می کند در حافظه، زمان بازیابی داده ها را کاهش می دهد و در نتیجه زمان پاسخگویی سریع تر می شود.
- تجربه کاربری بهتر: زمان پاسخ سریعتر و مقیاس پذیری بهبود یافته می تواند با کاهش زمان انتظار و بهبود عملکرد کلی برنامه، به ارائه تجربه کاربری بهتر کمک کند.
- کاهش هزینه: با کاهش بار روی منبع داده، کش در حافظه می تواند به کاهش هزینه اجرای برنامه کمک کند.
بهینه سازی برنامه های Nest.js با کش در حافظه
کش در حافظه یک راه بسیار موثر برای بهبود عملکرد کلی برنامه است. مشاهده کرده اید که چگونه یک کش درون حافظه را در Nest.js پیاده سازی کنید و چگونه مقیاس پذیری و تجربه کاربری را بهبود می بخشد. همچنین می تواند زمان پاسخگویی را بهبود بخشد و هزینه های اجرای برنامه شما را کاهش دهد.
هنگام ساختن Nest.js API یا برنامه بعدی خود، از مفهوم کش استفاده عملی کنید.