مارک پلاس

تکنولوژی نوین اینترنتی

Middleware کش کردن داده‌ها

دسته‌بندی‌ها

Middleware کش کردن داده‌ها
Middleware کش کردن داده‌ها

در لاراول، می‌توانید از Middleware برای کش کردن داده‌ها استفاده کنید تا عملکرد API خود را بهبود بخشید و زمان پاسخگویی را کاهش دهید. کش کردن می‌تواند به ویژه برای داده‌هایی که تغییرات مکرر ندارند یا نیاز به درخواست‌های پرهزینه دارند مفید باشد. با استفاده از یک middleware برای کش کردن داده‌ها، می‌توانید از کش به عنوان یک لایه موقت ذخیره‌سازی استفاده کنید که باعث کاهش بار بر روی سرور و افزایش سرعت می‌شود.

در ادامه نحوه ایجاد یک Middleware برای کش کردن داده‌ها را توضیح خواهیم داد.


فصل 1: ایجاد Middleware برای کش کردن داده‌ها

  1. ساخت Middleware جدید: ابتدا باید یک middleware جدید برای کش کردن ایجاد کنید. برای این کار از دستور زیر استفاده کنید:

    bash
    php artisan make:middleware CacheData
  2. ویرایش Middleware: پس از ایجاد، فایل middleware جدید شما در مسیر app/Http/Middleware/CacheData.php قرار خواهد گرفت. این فایل را باز کنید و کدهای زیر را به آن اضافه کنید تا داده‌ها را کش کند.

    php
    namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Cache; class CacheData { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { // ساخت کلید کش از URL درخواست $key = 'cache_' . md5($request->url()); // بررسی کش و بازگشت از کش در صورت وجود if (Cache::has($key)) { return response(Cache::get($key)); } // درخواست اصلی را ادامه دهید $response = $next($request); // کش کردن داده‌ها به مدت 60 دقیقه Cache::put($key, $response->getContent(), now()->addMinutes(60)); return $response; } }

    در این کد:

    • ابتدا کلید کش از URL درخواست ساخته می‌شود.

    • اگر کش موجود باشد، پاسخ کش‌شده بازگردانده می‌شود.

    • اگر کش موجود نباشد، درخواست به مسیر بعدی پردازش می‌شود و سپس پاسخ در کش ذخیره می‌شود.


فصل 2: ثبت Middleware در فایل Kernel

برای اینکه بتوانید از این middleware استفاده کنید، باید آن را در فایل app/Http/Kernel.php ثبت کنید.

  1. ثبت Middleware: در فایل Kernel.php، بخش routeMiddleware را پیدا کنید و CacheData را به آن اضافه کنید:

    php
    protected $routeMiddleware = [ // سایر middleware ها... 'cache.data' => \App\Http\Middleware\CacheData::class, ];

فصل 3: استفاده از Middleware در روت‌ها

حالا که middleware شما آماده است، می‌توانید از آن در روت‌ها یا کنترلرها استفاده کنید تا کش را برای درخواست‌های خاص فعال کنید.

  1. استفاده از Middleware در روت‌ها:

    برای استفاده از این middleware در روت‌ها، به راحتی می‌توانید آن را به روت خود اضافه کنید:

    php
    Route::get('/data', 'DataController@index')->middleware('cache.data');

    این بدین معناست که هنگام درخواست به روت /data، لاراول ابتدا بررسی می‌کند که آیا داده‌ها در کش موجود است یا خیر. اگر داده‌ها در کش وجود داشته باشند، پاسخ کش‌شده بازگشت داده می‌شود، در غیر این صورت درخواست ادامه پیدا کرده و داده‌ها در کش ذخیره می‌شوند.


فصل 4: کش کردن داده‌ها در کنترلر

همچنین می‌توانید کش کردن داده‌ها را مستقیماً در کنترلر خود نیز پیاده‌سازی کنید. این روش زمانی مفید است که بخواهید کش کردن را فقط برای برخی داده‌ها اعمال کنید.

  1. کش کردن داده‌ها در کنترلر:

    در کنترلر DataController، می‌توانید داده‌ها را کش کنید:

    php
    namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Cache; class DataController extends Controller { public function index() { $data = Cache::remember('data_key', now()->addMinutes(60), function () { // داده‌های خود را از پایگاه داده یا هر منبع دیگری بارگذاری کنید return SomeModel::all(); }); return response()->json($data); } }

    در اینجا از متد Cache::remember استفاده کرده‌ایم که بررسی می‌کند آیا داده‌ها در کش موجود هستند یا خیر. اگر داده‌ها موجود نباشند، از Callback برای بارگذاری داده‌ها استفاده می‌شود و سپس آنها در کش ذخیره می‌شوند.


فصل 5: پاکسازی کش

گاهی اوقات ممکن است نیاز داشته باشید که کش‌ها را به صورت دستی پاک کنید، مثلاً زمانی که داده‌ها تغییر می‌کنند یا به‌روزرسانی می‌شوند. برای این کار می‌توانید از دستور زیر استفاده کنید:

  1. پاکسازی کش برای یک کلید خاص:

    php
    Cache::forget('data_key');
  2. پاکسازی تمامی کش‌ها:

    php
    Cache::flush();

نتیجه‌گیری

استفاده از middleware برای کش کردن داده‌ها در لاراول یک روش مؤثر برای بهبود عملکرد و کاهش بار سرور است. با پیاده‌سازی این روش، می‌توانید زمان پاسخ‌دهی APIهای خود را به طور قابل توجهی کاهش دهید و تجربه کاربری بهتری را فراهم کنید.

این روش می‌تواند برای داده‌هایی که به ندرت تغییر می‌کنند، مانند لیست محصولات، اطلاعات کاربر، یا نتایج جستجو بسیار مفید باشد.

محتوای مرتبط

پست‌های مرتبط