در این مقاله قصد داریم درباره مشکل Enable Keep-Alive در GTmetrix صحبت کنیم و ببینیم چطور میتونیم این مشکل را در سایت پیدا و رفع کنیم و چرا اصلا این موضوع برای افزایش سرعت سایت ما اهمیت دارد.
خلاصهی از خطا Enable Keep-Alive
اولویت: بالا
میزان سختی: راحت
میانگین امتیاز: 93%
Keep Alive چیست؟
Keep Alive نحوه درخواست بین سرور و مرورگر کاربر است که میگوید: مرورگر میتواند بیش از یک فایل را بگیرد یا نگیرد.
به منظور نمایش صفحات وب در مرورگر باید فایلها از یک وب سرور درخواست شوند. هنگامی که مرورگر درخواست فایل میکند و وب سرور جواب بله یا خیر میدهد.
صفحات وب معمولا مجموعهای از تعداد زیادی فایل هستند و اگر لازم باشد برای هر یک از این فایل ها ارتباط جدیدی ایجاد شود، مدت زمان زیادی برای نمایش صفحات طول خواهد کشید.
طبیعتا مرورگر، برای نشان دادن صحیح صفحات سایت ما باید همه فایلها را دریافت نماید. در قدم اول برای باز کردن یک سایت مرورگر فایل HTML را دریافت کرده و آن را میخواند. سپس مرورگر موارد دیگری مانند CSS، JavaScript و تصاویر را که فایل HTML به آنها اشاره میکند را درخواست میکند. اگر Keep Alive فعال نباشد این مفهوم را میرساند که مرورگر بیش از یک فایل را در آن واحد نمیتواند درخواست کند آن موقع مرورگر برای دریافت همه فایلها هر بار درخواست جداگانه ارسال میکند و اگر سرور هر بار جداگانه پاسخ بدهد حاصل آن، زمان زیادی برای دریافت تمام فایلها تلف خواهد شد.صفحات وب معمولا مجموعهای از تعداد زیادی فایل هستند و اگر لازم باشد برای هر یک از این فایلها ارتباط جدیدی ایجاد شود، مدت زمان زیادی برای نمایش صفحات طول خواهد کشید و این فرایند میتواند زمان دانلود صفحه و هدر رفتن منابع سرور را افزایش دهد. ولی میتوان با فعال کردن Keep Alive به این قابلیت رسید که سرور بتواند به مرورگر بگوید که “هر چه فایل نیاز داری را درخواست کن یک جا.”
تعریف آکادمیک Keep Alive HTTP این است: “روشی که اجازه میدهد درخواست HTTP در کانکشن tcp به جای باز کردن درخواست جدید، هر چه فایل میخواهد دریافت کند.” به زبان سادهتر،بستری را فراهم میکند تا ارتباطی بین وب سرور و مروگر برقرار شود و اجازه میدهد که بیش از یک فایل را در آن واحد مرورگر دریافت کند.گاهی در برخی از مقالات Keep Alive به عنوان persistant connection هم صدا زده میشود.
آیا Enable Keep Alive به طور پیشفرض فعال نیست؟
برخی افراد به طور اشتباه باور دارند که Enable Keep Alive به شکل پیشفرض فعال است و لازم نیست در این باره نگران باشند زیرا امروزه keep alive در ارتباطات HTTP فعال است.
اگرچه این گفته درست میباشد، اما تعداد زیادی از افراد از هاستهای اشتراکی استفاده میکنند که ممکن است با توجه به سیاستهای مربوطه ارتباط با کاربر را بسته باشند. و از آنجا که میلیونها صفحه از هاستهای اشتراکی استفاده میکنند، دانستن اینکه ارتباطات شما keep alive هستند امری ضروری است. برای فهمیدن این موضوع می توانید از page speed tool گوگل یا سایت GTmetrix استفاده کنید.
چگونه Keep Alive را فعال کنیم
- Keep Alive با استفاده از HTTP هدر Connection: Keep-Alive فعال می شود.
- اگر Keep Alive فعال نشد، احتمالا HTTP Header های شما وضعیت connection: close را دارند.
- برای فعال شدن Keep Alive وضعیت آن را به connection: Keep-Alive تغییر دهید.
- فعال سازی Keep Alive وابسته به سرور مورد استفاده توسط شما و دسترسی هایی است که دارید. به بیشتر موارد در ادامه خواهیم پرداخت.
فعال سازی Keep Alive با استفاده از htaccess
اگر به فایل config وب سرور خود دسترسی ندارید، می توانید Keep Alive را با استفاده از فایل .htaccess فعال کنید.
<ifModule mod_headers.c> Header set Connection keep-alive </ifModule>
افزودن کد بالا به فایل htaccess باعث میشود تا در header ها Keep Alive را به درخواست های شما اضافه کند، که البته بیشتر وب سرورها یا محدودیتهایی را تعیین کردن تا کد بالا را بازنویسی (override) میکند. لطفا توجه داشته باشید که ممکن است بعد از وارد کردن دستور بالا با ارور 500 روبهرو شوید و علت این است که سرور شما با دستور بالا سازگاری لازم را ندارد.
فعال سازی Keep Alive در Apache
اگر به فایل پیکربندی Apache دسترسی دارید، می توانید Keep Alive را در آنجا فعال کنید. قسمت های مربوطه در زیر نشان داده شده اند.
# # 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
مشکلات Keep Alive را میتوان با HTTPCoriodule برطرف کرد. دستور keep-alive-disable وجود دارد که باید مراقب آن باشید، اگر این دستور را مشاهده کردید، مطمئن شوید قبل از حذف آن دلیل غیر فعال بودنش توسط هاستینگ را میدانید.
فعال سازی Keep-Alive در Litespeed
Keep Alive به صورت پیشفرض فعال میباشد، اما ممکن است سرور شما از چیز دیگری به اسم smart keep-alive استفاده می کند. smart keep-alive یکی از تنظیمات داخل Litespeed است که به طور مشخصی برای وبسایتهای با حجم بالا مورد استفاده قرار میگیرد. هنگامی که این گزینه فعال باشد، در قسمت page speed tools گزینهای ظاهر میشود که نشان میدهد Keep Alive غیر فعال است.
smart keep-alive فایل اولیه را با connection close در HTTP header درخواست خواهد میکند. سپس فایلهای دیگر را با فعال کردن Keep Alive درخواست میکند. این گزینه باعث میشود هنگامی که درخواستهای زیادی وجود دارند، کاربران بیشتری بتوانند همزمان متصل شوند.
نکته: بجز در مواقعی که ترافیک سایت بالایی دارید، میتوانید smart keep-alive را در config غیر فعال کنید و هنگامی که این کار را انجام دادید تمام ارتباطات شما از Keep Alive استفاده خواهند کرد.
اگر مطمئن نیستید که آیا برای شما از نوع smart هست و یا یقین دارید که این ویژگی غیرفعال است بهتر است به هاستینگ خود تیکت ارسال نمایید
مطلب قبلی : رفع خطای Inline small CSS and JavaScript