KeepAlive چیست؟
روشی برای حفظ کانکشن قبلی برای استفاده در درخواست های جدید است و بدینگونه از ایجاد کانکشن tcp جدید برای درخواست جدید جلوگیری می شود.
به عبارت ساده تر یک ارتباط بین وب سرور و وب بروزر شما است بر این اساس که در یک زمان وب بروزر از طریق یک کانکشن می تواند درخواست بیش از یک فایل را ارسال کند.
به KeepAlive کانکشن دائم نیز گفته می شود.
در عکس زیر می توانید شمای کلی در زمان فعال سازی و عدم فعال سازی KeepAlive را مشاهده کنید
چرا از keep-alive استفاده می کنیم؟
برای نمایش یک صفحه از وب سایت باید درخواست های متعددی از وب بروزر به وب سرور ارسال شود. برای دریافت فایل از وب سرور یک اتصال کوتاه از طریق وب بروزر به وب سرور ارسال می شود و وب بروزر از وب سرور سوال می کند که آیا فایل موجود است یا خیر، در واقع وب بروز ابتدا HTML وب پیج مورد نظر را دریافت می کند و سپس برای فایل هایی نظیر css ، جاوا اسکریپت و عکس ها و ... درخواست ارسال می کند و در نتیجه به ازای هر یک از این درخواست ها در صورت عدم فعال بودن KeepAlive یک درخواست جدید ایجاد می شود و اگر تعداد فایل های موجود در HTML نظیر عکس و css و ... زیاد باشد اثر منفی در سرعت لود سایت خواهد داشت اما با فعال سازی KeepAlive از سربار ایجاد کانکشن مجدد جلوگیری می شود.
چگونه keep-alive را فعال کنیم؟
keep-alive با ارسال "Connection: Keep-Alive" در هدر HTTP فعال می شود و نحوه فعال سازی آن با توجه به وب سروری که شما استفاده می کنید متفاوت می باشد. در ادامه به نحوه فعال سازی KeepAlive در وب سرور ها مختلف و متد های مختلف معمول خواهیم پرداخت.
نحوه فعال سازی KeepAlive با استفاده از .httacess
برای فعال سازی keep-alive با استفاده از httacess مقدار زیر را به فایل httacess خود اضافه کنید. این مقدار پیش فرض وب سرور را بازنویسی می کند.
فعال سازی keep-alive در Apache ( آپاچی )
برای فعال سازی KeepAlive در آپاچی مقادیری مشابه زیر در تنظیمات آپاچی انجام دهید:
پس از تغییرات وب سرور آپاچی را ریستارت کنید تا تغییرات اعمال شود.
نحوه فعال سازی keep-alive در NginX
برای فعال سازی KeepAlive در NginX پارامتر keepalive را به فایل upstream تنظیمات خود اضافه کنید:
بعد از تغییرات وب سرور NginX را ریستارت کنید تا تغییرات اعمال شود.
برای اطلاعات بیشتر به اینجا و اینجا مراجعه کنید.
روشی برای حفظ کانکشن قبلی برای استفاده در درخواست های جدید است و بدینگونه از ایجاد کانکشن tcp جدید برای درخواست جدید جلوگیری می شود.
به عبارت ساده تر یک ارتباط بین وب سرور و وب بروزر شما است بر این اساس که در یک زمان وب بروزر از طریق یک کانکشن می تواند درخواست بیش از یک فایل را ارسال کند.
به KeepAlive کانکشن دائم نیز گفته می شود.
در عکس زیر می توانید شمای کلی در زمان فعال سازی و عدم فعال سازی KeepAlive را مشاهده کنید
چرا از keep-alive استفاده می کنیم؟
برای نمایش یک صفحه از وب سایت باید درخواست های متعددی از وب بروزر به وب سرور ارسال شود. برای دریافت فایل از وب سرور یک اتصال کوتاه از طریق وب بروزر به وب سرور ارسال می شود و وب بروزر از وب سرور سوال می کند که آیا فایل موجود است یا خیر، در واقع وب بروز ابتدا HTML وب پیج مورد نظر را دریافت می کند و سپس برای فایل هایی نظیر css ، جاوا اسکریپت و عکس ها و ... درخواست ارسال می کند و در نتیجه به ازای هر یک از این درخواست ها در صورت عدم فعال بودن KeepAlive یک درخواست جدید ایجاد می شود و اگر تعداد فایل های موجود در HTML نظیر عکس و css و ... زیاد باشد اثر منفی در سرعت لود سایت خواهد داشت اما با فعال سازی KeepAlive از سربار ایجاد کانکشن مجدد جلوگیری می شود.
چگونه keep-alive را فعال کنیم؟
keep-alive با ارسال "Connection: Keep-Alive" در هدر HTTP فعال می شود و نحوه فعال سازی آن با توجه به وب سروری که شما استفاده می کنید متفاوت می باشد. در ادامه به نحوه فعال سازی KeepAlive در وب سرور ها مختلف و متد های مختلف معمول خواهیم پرداخت.
نحوه فعال سازی KeepAlive با استفاده از .httacess
برای فعال سازی keep-alive با استفاده از httacess مقدار زیر را به فایل httacess خود اضافه کنید. این مقدار پیش فرض وب سرور را بازنویسی می کند.
کد:
<ifModule mod_headers.c> Header set Connection keep-alive </ifModule>
فعال سازی keep-alive در Apache ( آپاچی )
برای فعال سازی KeepAlive در آپاچی مقادیری مشابه زیر در تنظیمات آپاچی انجام دهید:
کد:
#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On
#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100
#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 100
پس از تغییرات وب سرور آپاچی را ریستارت کنید تا تغییرات اعمال شود.
نحوه فعال سازی keep-alive در NginX
برای فعال سازی KeepAlive در NginX پارامتر keepalive را به فایل upstream تنظیمات خود اضافه کنید:
کد:
upstream your_upstream {
# The keepalive parameter sets the maximum number of idle keepalive connections
# to upstream servers that are preserved in the cache of each worker process. When
# this number is exceeded, the least recently used connections are closed.
keepalive 100;
server 1.2.3.4:80;
server 1.2.3.5:80;
...
}
بعد از تغییرات وب سرور NginX را ریستارت کنید تا تغییرات اعمال شود.
برای اطلاعات بیشتر به اینجا و اینجا مراجعه کنید.