اگر از Laravel برای توسعه پروژههای خود استفاده میکنید، نسخه Laravel 12.34.0 یک قابلیت کاربردی جدید را در اختیار شما قرار داده است. ویژگی defer که به کلاس HTTP Client Batch اضافه شده، به شما اجازه میدهد درخواستهای HTTP را پس از ارسال پاسخ به کاربر اجرا کنید.
این قابلیت میتواند تأثیر قابل توجهی بر افزایش سرعت پاسخدهی (Response Time)، بهبود تجربه کاربری (UX) و بهینهسازی مصرف منابع سرور داشته باشد.
قابلیت Defer در Laravel چیست؟
در بسیاری از پروژهها لازم است پس از انجام یک عملیات، اطلاعاتی به سرویسهای خارجی ارسال شود؛ برای مثال:
- ارسال اعلان (Notification)
- بروزرسانی موجودی انبار
- ثبت لاگ در سرویسهای مانیتورینگ
- ارسال اطلاعات به CRM
- فراخوانی Webhookها
- هماهنگسازی دادهها با سرویسهای دیگر
در گذشته، اجرای این درخواستها باعث میشد کاربر تا پایان تمام درخواستهای HTTP منتظر بماند. اما با معرفی متد defer()، این درخواستها بعد از ارسال Response به کاربر اجرا میشوند.
در نتیجه، کاربر پاسخ را سریعتر دریافت میکند و عملیات زمانبر در پسزمینه انجام میشود.

مزایای استفاده از Defer در Laravel
1. افزایش سرعت پاسخدهی به کاربر
مهمترین مزیت defer این است که زمان اجرای درخواستهای خارجی از زمان پاسخدهی به کاربر جدا میشود.
در نتیجه:
- صفحات سریعتر بارگذاری میشوند.
- زمان انتظار کاربر کاهش پیدا میکند.
- تجربه کاربری بهبود مییابد.
2. اجرای عملیات زمانبر بدون کاهش Performance
عملیاتی مانند:
- ارسال ایمیل
- بروزرسانی موجودی کالا
- ارسال اطلاعات به APIهای خارجی
- ثبت لاگ
- ارسال Notification
دیگر باعث کند شدن درخواست اصلی نمیشوند و پس از ارسال پاسخ اجرا خواهند شد.
3. مدیریت بهتر منابع سرور
با کاهش مدت زمانی که درخواست اصلی درگیر عملیات جانبی است، منابع سرور به شکل بهینهتری مدیریت میشوند و در پروژههای پرترافیک، عملکرد کلی سیستم نیز بهبود پیدا میکند.
نمونه استفاده از Defer در Laravel
use Illuminate\Support\Facades\Http;
Http::batch(function ($batch) {
$batch->defer(
Http::post('https://example.com/api/notify', [
// Data...
])
);
$batch->defer(
Http::post('https://example.com/api/update-stock', [
// Data...
])
);
});
در این مثال، هر دو درخواست HTTP پس از ارسال پاسخ به کاربر اجرا خواهند شد؛ بنابراین کاربر منتظر پایان این درخواستها نخواهد ماند.
چه زمانی از Defer استفاده کنیم؟
این قابلیت برای سناریوهایی مناسب است که نتیجه درخواست HTTP برای پاسخ فعلی کاربر ضروری نیست. برای مثال:
- ارسال اعلان به سرویسهای پیامرسان
- فراخوانی Webhookها
- ارسال داده به سرویسهای Analytics
- بروزرسانی سیستمهای جانبی
- ثبت گزارش در سرویسهای Logging
- همگامسازی اطلاعات با APIهای خارجی
اگر پاسخ API خارجی برای نمایش نتیجه به کاربر لازم باشد، استفاده از defer انتخاب مناسبی نخواهد بود.
جمعبندی
ویژگی defer در Laravel 12.34.0 یکی از قابلیتهای کوچک اما بسیار کاربردی این نسخه است که میتواند بدون تغییرات پیچیده در معماری پروژه، سرعت پاسخدهی اپلیکیشن را افزایش دهد.
اگر پروژه شما با APIهای خارجی، وبهوکها یا سرویسهای جانبی در ارتباط است، استفاده از این قابلیت میتواند باعث بهبود عملکرد، کاهش زمان انتظار کاربران و استفاده بهینهتر از منابع سرور شود.


ممنون از مطلب کاملتون 👍
واقعاً کمک کرد ممنون!
متشکرم از دیدگاه خوبتون 👌