keep Alive چیست؟
Keep-alive یک روش اتصال است که در آن از روش اتصال TCP برای اتصال
HTTP استفاده می گردد. با استفاده از این روش نیازی به ایجاد یک اتصال جدید برای هر درخواست نیست. در واقع می توان گفت این اتصال پل ارتباطی است میان وب سرور و مرورگرها که در آن با هر درخواست می توان بیش از یک فایل دریافت کرد.
به زبان ساده تر می توان در تعریف آن گفت مرورگر برای اینکه صفحات سایت شما را برای بازدید کننده ها نشان دهد باید فایل ها از سرور درخواست کند. با استفاده از Keep-alive مرورگر فایل های
HTML را گرفته و بعد از آن سایر فایل ها را دریافت می کند. از آنجایی که یک صفحه وب از فایل های مختلفی تشکیل شده اگر قرار باشد برای هر کدام از فایل ها یک درخواست ارسال شود باز شدن یک صفحه زمان بیشتری می گیرد و آنچه که این زمان را کاهش می دهد همین ویژگی است. این تغییر سرعت گاهی اوقات تا 50 درصد محاسبه می شود. این موضوع به این معناست که در صورت عدم فعال نمودن Keep-alive مدت زمان باز شدن یک صفحه سایت در مرورگر تا 50 درصد افزایش می یابد.
یکی دیگر از مواردی که اهمیت این قابلیت را نشان می دهد موضوع سئو سایت است. مدیران و صاحبان وب سایت از اهمیت موضوع سئو کاملا با خبر هستند و تمام تلاش خود را برای بهبود سایت به کار می برند. فعال بودن Keep-alive یکی از امتیازهای اساسی برای افزایش سئو سایت است.
برای درک بهتر موضوع به تصویر زیر نگاه کنید؛ این تصویر نحوه ی ارتباط بین مرورگر و وب سرور را در حالت ارتباط پایا و غیر آن نمایش می دهد.
چگونه Keep-alive را فعال کنیم؟
برای فعال نمودن آن باید در HTTP header کد connection: keep-Alive را فعال نمایید. گاهی اوقات ممکن است Keep-alive فعال نباشد که علت آن وجود کد connection: close در HTTP header است که برای تغییر آن مطابق آنچه در ابتدا گفته شد باید عمل نمایید. به طور کلی فعال سازی آن به عوامل مختلفی بستگی دارد که مهم ترین آن ها سرور مورد استفاده و همچنین منابع در دسترس است.
Keep-alive دو نوع تنظیم اصلی max-request و Timeout را دارد. تنظیم max-request تعداد درخواست های مورد قبول را تعیین می کند و تنظیم Timeout زمان مورد انتظار را نشان می دهد. زمان Timeout معمولا به صورت پیش فرض 15 ثانیه در نظر گرفته می شود.
مزایا و معایب استفاده از Keep-alive
مزیت های استفاده از آن را می توان علاوه بر بهبود وضعیت سایت از لحاظ سرعت دسترسی به کاهش مصرف پردازنده هم اشاره نمود. هر چه تعداد ایجاد و خاتمه درخواست ها و ارتباط ها در یک سرور کمتر باشد صرفه جویی زیادی در مصرف پردازنده می شود و عملکرد سایت بهبود می یابد.
اما در خصوص معایب استفاده از Keep-alive افزایش مصرف حافظه مطرح می شود. ارتباط مداوم بین مرورگر و سرور باعث می شود حجم زیادی از حافظه گرفته شود. اگر غیر فعال باشد مقداری از حافظه خالی شده و سرور می تواند به درخواست های دیگر پاسخ دهد.
به طور کلی برای اینکه تصمیم بگیریم Keep-alive فعال باشد یا خیر باید عواملی مانند منابع سرور، نوع وب سایت و ترافیک سایت را مورد بررسی قرار دهیم.
روش های پر کاربرد جهت فعال نمودن Keep-alive
برای فعال سازی روش های متعددی وجود دارد. استفاده از فایل htaccess فعال سازی در Apache، فعال سازی در NGINX و فعال سازی در Litespeed که در ادامه به معرفی و توضیحات مربوط به هر کدام از روش ها می پردازیم.
1 – استفاده از فایل جهت فعال سازی
برای فعال سازی Keep-alive از طریق htaccess. لازم است کد زیر را به فایل htaccess. وارد نمایید.
همچنین برای این کار باید هدر های مربوط به Keep-alive را هم به درخواست ها اضافه نمایید. تنظیمات جدیدی که در نظر گرفته اید جایگزین محدودیت هایی خواهد شد که بر روی اکثر وب سرور ها وجود دارد.
2 – نحوه فعال سازی در Apache
برای فعال سازی در آپاچی باید به فایل تنظیمات آن دسترسی داشته باشید. با استفاده از کد KeepAlive# امکان فعال یا غیر فعال نمودن Keep-alive برای شما میسر خواهد گردید. اگر در مقابل این کد کلمه off قرار داشت یعنی Keep-alive غیر فعال و اگر On قرار داشت به معنای فعال شدن آن است. همچنین با استفاده از کد MaxKeepAliveRequests# بیشترین درخواست مجاز طی در اتصالی مشخص می گردد. اگر این مقدار صفر در نظر بگیریم درخواست ها بی نهایت می شود پس برای افزایش و بهبود کارایی بهتر است از اعداد بزرگ تر استفاده نماییم. کد بعدی که باید با آشنا شوید # KeepAliveTimeout است. # KeepAliveTimeout تعداد ثانیه هایی که مشخص می کند که سرور برای دریافت درخواست بعدی یک کلاینت خاص منتظر می ماند.
فعال نمودن در NGINX با استفاده از کد keepalive_disable در HTTPCoreModule صورت می گیرد. البته توصیه می شود پیش از حذف این کد حتما از علت غیر فعال شدن Keep-alive مطلع گردید.
3 – فعال سازی در Litespeed
در لایت اسپید Keep-alive به صورت پیش فرض همیشه فعال است. در شرایطی که سرور شما از امکاناتی نظیر keep-alive هوشمند یا smart keep-alive استفاده نماید ممکن است این حالت متفاوت باشد و تنظیمات پیش فرض روی آن رعایت نشده باشد. امکان keep-alive هوشمند یا smart keep-alive در واقع مختص لایت اسپید بوده و بر روی سایت های حجیم مورد استفاده قرار می گیرد و فعال بودن این تنظیم موجب می شود که در ابزار pagespeed گزینه غیر فعال بودن Keep-alive رویت گردد.
Keep-alive هوشمند یا smart keep-alive در ابتدا درخواست را برای فایل ابتدایی یا همان فایل HTML را با بستن HTTP header ارسال کرده و پس از آن به سراغ سایر فایل هایی مانند تصاویر و کد های جاوا اسکریپت و CSS می رود؛ اما مزیت این کار در چیست؟ با این کار در زمانی که در خواست های زیادی هم زمان به سرور ارسال می شود این امکان وجود دارد که کاربران بیشتری در یک زمان به سرور وصل شوند.
گاهی نیاز است این قابلیت را در لایت اسپید غیر فعال نمایید. برای این کار در محیط ادمین وارد بخش سرور شده و از مسیر Tuning مقدار smart keep-alive را به No تغییر دهید.
آیا Keep-alive به طور پیش فرض فعال است؟
برخی اشتباها بر این باورند که نیازی نیست نگران فعال کردن keep-alive باشند چون اتصالات HTTP امروزی به طور پیش فرض مقاوم و ماندگار است. (یعنی keep-alive در آنها فعال است)
این حرف درست است اما نه در همه موارد. مثلا افراد زیادی از
هاست یا وب سرورهای اشتراکی که اتصالات ناشناس به کاربر را می بندند، استفاده می کنند. این کار برای حفظ کارایی سرور انجام می شود و چون میلیون ها سایت روی هاست اشتراکی وجود دارند، قطعا نیاز است بدانید آیا اتصالات شما keep-alive هست یا خیر. با استفاده از ابزار pagespeed به راحتی می توانید این کار را انجام دهید.