هدر Keep-Alive چیست؟ راهنمای کامل بهینهسازی اتصالات HTTP (۲۰۲۵)

📌 خلاصه مطلب (TL;DR)
- Keep-Alive چیست؟ یک هدر HTTP که اجازه میدهد چندین درخواست از یک اتصال TCP استفاده کنند، به جای باز کردن اتصال جدید برای هر درخواست.
- مزایای اصلی: کاهش تأخیر (Latency)، صرفهجویی در CPU و پهنای باند، کاهش دستمزه TLS.
- در HTTP/2 و HTTP/3: Keep-Alive به صورت ذاتی فعال است و نیازی به تنظیم دستی ندارد.
- تنظیم پیشنهادی: KeepAliveTimeout بین ۵ تا ۱۵ ثانیه برای تعادل بین عملکرد و مصرف منابع.
وقتی یک صفحه وب را باز میکنید، مرورگر شما ممکن است دهها یا صدها فایل مختلف (HTML، CSS، JavaScript، تصاویر) را از سرور درخواست کند. بدون Keep-Alive، برای هر فایل یک اتصال TCP جدید باز و بسته میشود که منابع زیادی مصرف میکند. در این مقاله، همه چیز درباره Keep-Alive و نقش آن در بهینهسازی وب را یاد میگیرید.
Keep-Alive چیست و چگونه کار میکند؟
HTTP Keep-Alive (یا HTTP Persistent Connection) یک مکانیزم است که اجازه میدهد یک اتصال TCP واحد برای ارسال و دریافت چندین درخواست/پاسخ HTTP استفاده شود، به جای باز کردن اتصال جدید برای هر جفت درخواست-پاسخ.
بدون Keep-Alive:
درخواست ۱ → باز کردن TCP → TLS Handshake → ارسال → دریافت → بستن TCP درخواست ۲ → باز کردن TCP → TLS Handshake → ارسال → دریافت → بستن TCP درخواست ۳ → باز کردن TCP → TLS Handshake → ارسال → دریافت → بستن TCP
با Keep-Alive:
باز کردن TCP → TLS Handshake → درخواست ۱ → پاسخ ۱ → درخواست ۲ → پاسخ ۲ → درخواست ۳ → پاسخ ۳ بستن TCP (بعد از Timeout)
مزایای استفاده از Keep-Alive
| مزیت | توضیح | تأثیر |
|---|---|---|
| کاهش تأخیر | حذف زمان TCP Handshake برای هر درخواست | ۵۰-۱۰۰ms کاهش به ازای هر درخواست |
| صرفهجویی CPU | کاهش اتصالات جدید TCP و TLS | تا ۳۰٪ کاهش بار سرور |
| کاهش ازدحام شبکه | کمتر شدن پکتهای TCP SYN/ACK | بهبود عملکرد شبکه |
| بهینهسازی TLS | یک Handshake برای چند درخواست | صرفهجویی در رمزنگاری |
Keep-Alive در نسخههای مختلف HTTP
HTTP/1.0
در HTTP/1.0، Keep-Alive به صورت پیشفرض غیرفعال است. برای فعالسازی باید هدر زیر ارسال شود:
Connection: keep-alive
HTTP/1.1
در HTTP/1.1، Keep-Alive به صورت پیشفرض فعال است. برای غیرفعال کردن آن:
Connection: close
HTTP/2 و HTTP/3
💡 نکته مهم: در HTTP/2 و HTTP/3، هدرهای Connection و Keep-Alive ممنوع هستند. این پروتکلها از Multiplexing استفاده میکنند که اجازه میدهد چندین درخواست به صورت همزمان روی یک اتصال ارسال شوند.
پارامترهای Keep-Alive
هدر Keep-Alive میتواند دو پارامتر داشته باشد:
Keep-Alive: timeout=5, max=100
- timeout: حداکثر زمان (ثانیه) که اتصال بیکار باز میماند
- max: حداکثر تعداد درخواستهایی که میتوان روی این اتصال ارسال کرد
تنظیم Keep-Alive در وبسرورها
Nginx
http {
keepalive_timeout 65;
keepalive_requests 100;
}
Apache
KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5
جدول مقایسه: HTTP/1.1 Keep-Alive vs HTTP/2 Multiplexing
| ویژگی | HTTP/1.1 Keep-Alive | HTTP/2 Multiplexing |
|---|---|---|
| درخواستهای همزمان | یکی در هر لحظه (صف) | چندین همزمان |
| Head-of-Line Blocking | بله، مشکلساز | خیر، حل شده |
| فشردهسازی هدر | ندارد | HPACK |
| Server Push | ندارد | دارد |
بهترین تنظیمات Keep-Alive برای عملکرد
توصیههای ۲۰۲۵:
- KeepAliveTimeout: بین ۵ تا ۱۵ ثانیه (پیشفرض Apache 2.4 = ۵ ثانیه)
- MaxKeepAliveRequests: ۱۰۰ تا ۱۰۰۰ بسته به ترافیک
- HTTP/2 فعال کنید: اگر HTTPS دارید، HTTP/2 را فعال کنید که عملکرد بسیار بهتری دارد
- مانیتورینگ: اتصالات باز را پایش کنید تا منابع سرور بیش از حد مصرف نشود
سوالات متداول درباره Keep-Alive
آیا Keep-Alive همیشه باید فعال باشد؟
بله، در اکثر موارد Keep-Alive باید فعال باشد چون باعث کاهش تأخیر و بهبود عملکرد میشود. تنها استثنا سرورهایی با ترافیک بسیار بالا و منابع محدود هستند که ممکن است نیاز به تنظیم دقیقتر timeout داشته باشند.
تفاوت Keep-Alive در HTTP/1.1 و HTTP/2 چیست؟
در HTTP/1.1، Keep-Alive یک ویژگی اختیاری است که با هدر Connection تنظیم میشود. در HTTP/2، اتصالات پایدار (persistent connections) به صورت ذاتی در پروتکل تعبیه شده و هدر Keep-Alive اصلاً استفاده نمیشود. HTTP/2 از multiplexing استفاده میکند که بسیار کارآمدتر است.
KeepAliveTimeout چقدر باید باشد؟
مقدار پیشنهادی بین ۵ تا ۱۵ ثانیه است. مقدار کم (۵ ثانیه) منابع را آزاد میکند اما ممکن است اتصالات زودتر بسته شوند. مقدار زیاد (۶۵ ثانیه) اتصالات را باز نگه میدارد اما منابع بیشتری مصرف میکند. برای سایتهای پرترافیک، ۵ ثانیه معمولاً بهتر است.
آیا Keep-Alive روی SEO تأثیر دارد؟
بله، به صورت غیرمستقیم. Keep-Alive باعث کاهش TTFB (Time to First Byte) و بهبود سرعت صفحه میشود. سرعت صفحه یکی از فاکتورهای رتبهبندی گوگل است، خصوصاً با Core Web Vitals. بنابراین تنظیم صحیح Keep-Alive میتواند به SEO کمک کند.
چگونه بفهمم Keep-Alive روی سرور من فعال است؟
میتوانید با ابزارهایی مانند curl یا Chrome DevTools بررسی کنید. با دستور curl -I سایتتان را چک کنید و به دنبال هدر Connection: keep-alive بگردید. همچنین در Chrome DevTools بخش Network، ستون Connection ID را فعال کنید؛ اگر چند درخواست ID یکسان دارند، Keep-Alive فعال است.
نتیجهگیری
Keep-Alive یکی از مهمترین بهینهسازیهای HTTP است که با کاهش اتصالات جدید، عملکرد وبسایت را بهبود میدهد. در HTTP/1.1 باید آن را تنظیم کنید، اما اگر از HTTP/2 استفاده میکنید، این قابلیت به صورت پیشرفتهتر و خودکار در پروتکل تعبیه شده است.
🚀 سرویسهای برتینا برای عملکرد بهتر
برای بهترین عملکرد Keep-Alive و HTTP/2، از سرویسهای بهینهسازی شده برتینا استفاده کنید:
- ✅ هاست لینوکس با HTTP/2 و LiteSpeed
- ✅ سرور مجازی (VPS) با تنظیمات سفارشی
- ✅ گواهی SSL برای فعالسازی HTTP/2
منابع:




