خانه هاست و میزبانی وب هدر Keep-Alive چیست؟ راهنمای کامل بهینه‌سازی اتصالات HTTP (۲۰۲۵)
تاریخ به‌روزرسانی : 1397/08/12
به قلم : شهاب بیرامی
زمان مطالعه : 5 دقیقه

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

هدر Keep-Alive چیست

📌 خلاصه مطلب (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، از سرویس‌های بهینه‌سازی شده برتینا استفاده کنید:

منابع:

نظرات