در دنیای امروزی که سرعت حرف اول را میزند، Latency یا تاخیر به یکی از مهمترین فاکتورها در دنیای دیجیتال تبدیل شده است. به طور کلی، اگر بخواهیم تعریف کنیم که Latency چیست میتوانیم بگوییم به زمان لازم برای انجام یک عمل یا انتقال داده از یک نقطه به نقطه دیگر اشاره دارد. تاخیر در هر زمینهای که با تبادل اطلاعات سروکار دارد، از جمله شبکههای کامپیوتری، سیستمهای کامپیوتری، برنامههای کاربردی و حتی دنیای واقعی، اهمیت دارد. در این مقاله، توضیح میدهیم که زمان پاسخگویی یا Latency چیست؟ چرا به وجود میآید؟ و چطور میتوان آن را کاهش داد؟
Latency چیست؟
اول میخواهیم به شکل دقیقتر به این موضوع بپردازیم که Latency چیست؟ تاخیر یا زمان پاسخگویی، به مدت زمان لازم برای عبور داده از یک نقطه به نقطه دیگر در شبکه اشاره دارد. فرض کنید سرور A در نیویورک یک بسته داده را به سرور B در لندن ارسال میکند. سرور A بسته را در ساعت 04:38:00.000 GMT ارسال و سرور B آن را در ساعت 04:38:00.145 GMT دریافت میکند. به اختلاف بین این دو زمان Latency شبکه گفته میشود که در اینجا 0.145 ثانیه یا 145 میلیثانیه است.
معمولا، تاخیر بین دستگاه کاربر (کلاینت) و دیتاسنتر میزبان سرور محاسبه میشود. این اندازهگیری به توسعه دهندگان کمک میکند تا بفهمند یک صفحه وب یا اپلیکیشن با چه سرعتی برای کاربران بارگذاری میشود. هرچند دادهها در شبکه اینترنت با سرعت نور حرکت میکنند، اما تاثیر فاصله و تاخیرهای ناشی از تجهیزات زیرساخت اینترنت، باعث میشود که حذف Latency شبکه به طور کامل غیرممکن باشد. با این حال، میتوان آن را به حداقل میزان ممکن رساند.
تاخیر یا Latency بالا، باعث عملکرد ضعیف وب سایت و اپلیکیشن میشود، روی بهینه سازی موتور جستجو (SEO) تاثیر منفی میگذارد و حتی میتواند کاربران را ناچار به ترک سایت یا اپلیکیشن کند.
دلیل به وجود آمدن Latency چیست؟
اکنون که با مفهوم تاخیر یا زمان پاسخگویی آشنا شدیم، توضیح میدهیم که دلیل به وجود آمدن Latency چیست؟ یکی از اصلیترین و مهمترین دلایل تاخیر در شبکه، فاصله است؛ به طور خاص، فاصله بین دستگاههای کاربرانی که درخواستها را ارسال میکنند و سرورهایی که به آن درخواستها پاسخ میدهند. به عنوان مثال، اگر یک وب سایت در دیتا سنتری در شهر کلمبوس ایالت اوهایو میزبانی شود، درخواستهای کاربران در شهر سینسیناتی (حدود ۱۶۰ کیلومتر دورتر) را به سرعت (به احتمال زیاد در مدت زمان ۵ تا ۱۰ میلیثانیه) دریافت میکند.
این در حالی است که درخواستهای کاربران در شهر لسآنجلس (حدود ۳۵۰۰ کیلومتر دورتر) زمان بیشتری (حدود ۴۰ تا ۵۰ میلیثانیه) طول میکشد تا به سرور برسد. شاید چند میلیثانیه اضافه چندان زیاد به نظر نرسد، اما این تاخیر با تمام ارتباطات رفت و برگشتی که برای برقراری ارتباط بین کاربر و سرور لازم است، حجم و زمان بارگذاری صفحه و هر مشکلی در تجهیزات شبکهای که دادهها در طول مسیر از آن عبور میکنند، همراه میشود و بنابراین به احتمال زیاد تاثیر آن بیشتر میشود.
به مدت زمانی که طول میکشد تا یک پاسخ پس از درخواست کاربر به دستگاه او برسد، تاخیر یا زمان رفت و برگشت (RTT) گفته میشود که به طور سادهتر، به معنی مدت زمان لازم برای یک درخواست در شبکه برای رفتن از یک نقطه به یک مقصد و بازگشت به همان نقطه است. مقدار RTT دو برابر Latency شبکه است، زیرا دادهها باید در هر دو جهت (از کاربر به سرور و از سرور به کاربر) ارسال شوند. دادههایی که در اینترنت جابجا میشوند، معمولا نه فقط از یک شبکه، بلکه از چندین شبکه عبور میکنند.
هرچه تعداد شبکههایی که یک پاسخ HTTP باید از آنها عبور کند بیشتر باشد، احتمال افزایش تاخیر هم بیشتر میشود. به عنوان مثال، زمانی که بستههای داده بین شبکهها جابجا میشوند، از نقاط تبادل اینترنت (IXP) عبور میکنند. در این نقاط، روترها باید دادهها را پردازش و مسیریابی کنند و ممکن است لازم باشد آنها را به بستههای کوچیکتر تقسیم کنند. همه این کارها باعث میشود چند میلیثانیه به زمان رفت و برگشت (RTT) اضافه شود.
با خرید vps با تاخیر کم و آپتایم بالا و میزبانی سایت خود بر روی سرور مجازی به جای هاست اشتراکی میتوانید زمان تاخیر لود سایت و برنامه خود را به حداقل برسانید.
تاخیر، توان عملیاتی و پهنای باند شبکه
تاخیر، پهنای باند و توان عملیاتی شبکه، تا حد زیادی به هم مرتبط هستند، اما هر یک از آنها یک ویژگی متفاوت را اندازهگیری میکنند.
- پهنای باند، به معنای حداکثر میزان دادهای است که میتواند در یک لحظه از شبکه عبور کند. فرض کنید پهنای باند یک شبکه ۱۰۰ مگابیت بر ثانیه است. این یعنی حداکثر ۱۰۰ مگابیت داده میتواند در یک ثانیه از طریق شبکه منتقل شود.
- توان عملیاتی، میانگین میزان دادهای است که در یک دوره زمانی مشخص از شبکه عبور میکند. فرض کنید توان عملیاتی یک شبکه در یک دوره زمانی ۱۰ دقیقهای ۵۰ مگابیت بر ثانیه باشد. این یعنی به طور میانگین در این ۱۰ دقیقه ۵۰ مگابیت داده در هر ثانیه از شبکه عبور کرده است. توان عملیاتی، لزوما معادل پهنای باند نیست، زیرا تحت تاثیر زمان پاسخگویی و عوامل دیگر قرار میگیرد.
- تاخیر، یک معیار زمانی است، نه میزان دادهای که در طول زمان دانلود میشود. فرض کنید Latency شبکه ۱۰ میلیثانیه باشد. این یعنی ۱۰ میلیثانیه طول میکشد تا دادهها از یک نقطه به نقطه دیگر در شبکه برسند. میزان دادهای که در طول زمان دانلود میشود، به پهنای باند و ترافیک شبکه بستگی دارد.
چطور میتوان Latency را کاهش داد؟
اکنون هم میدانیم تعریف Latency چیست و هم دلیل به وجود آمدن Latency چیست. در ادامه به این سوال پاسخ میدهیم که چطور میتوان آن را کاهش داد.
۱. استفاده از CDN
استفاده از شبکه توزیع محتوا (CDN) قدم بزرگی برای کاهش تاخیر است. اما اینجا نقش CDN چیست؟ CDN محتویات ثابت را در سرورهای مختلف در سراسر جهان ذخیره (کش) میکند و به کاربران تحویل میدهد.
به عبارت سادهتر، استفاده از CDN باعث میشود کاربران محتویات ثابت مانند تصاویر، فایلهای جاوا اسکریپت و استایل شیتها را از سرورهای نزدیک به خود دریافت کنند. این امر به نوبه خود، زمان رفت و برگشت اطلاعات را کاهش داده و در نتیجه، باعث کاهش Latency شبکه میشود. شبکههای توزیع محتوا به بهبود سرعت بارگذاری صفحات وب، افزایش در دسترس بودن وب سایت و کاهش فشار روی سرور اصلی وب سایت کمک میکنند.
سرورهای CDN در مکانهای مختلفی توزیع شدهاند تا محتوا به کاربران نهایی نزدیکتر ذخیره شود و نیازی به طی مسافت طولانی برای رسیدن به آنها نداشته باشد. این یعنی بارگذاری یک صفحه وب زمان کمتری میبرد که باعث بهبود سرعت و عملکرد وب سایت میشود.
۲. کاهش منابع مسدود کننده و بهینه سازی تصاویر
دومین روش کاهش تاثیر Latency چیست؟ علاوه بر Latency شبکه، عوامل دیگری نیز میتوانند سرعت و عملکرد سایت یا اپلیکیشن را کاهش دهند. توسعه دهندگان وب میتوانند تعداد منابع مسدود کننده رندر را به حداقل برسانند (مثلا با بارگذاری جاوا اسکریپت در انتها)، تصاویر را برای بارگذاری سریعتر بهینه سازی کنند و در صورت امکان، اندازه فایلها را کاهش دهند.
منابع مسدود کننده رندر، فایلهایی هستند که تا وقتی دانلود و پردازش شوند، مانع نمایش محتوای اولیه صفحه وب میشوند. فایلهای جاوا اسکریپت، استایل شیتها و فونتها نمونههایی از این منابع هستند. یکی از روشهای کاهش اندازه فایلهای جاوا اسکریپت و CSS، فشردهسازی کد (Minification) است.
۳. تسریع بارگذاری منابع حیاتی
با بارگذاری استراتژیک برخی از منابع حیاتی در ابتدا، میتوان عملکرد ظاهری صفحه و سرعت آن را بهبود بخشید. یک صفحه وب میتواند طوری پیکربندی شود که ابتدا ناحیه بالای صفحه که بیشترین میزان تعاملپذیری را دارد، بارگذاری کند تا کاربران بتوانند قبل از اتمام کامل بارگذاری صفحه با آن تعامل داشته باشند. (منظور از ناحیه بالای صفحه، قسمتی در پنجره مرورگر است که بدون نیاز به پایین رفتن و اسکرول کردن صفحه نمایش داده میشود).
فرض کنید وب سایتی دارید که لوگوی شما، منوی اصلی و دکمه جستجو در بخش بالای صفحه قرار دارند. با بارگذاری اولویت بندی شده این بخش، کاربران میتوانند بلافاصله پس از شروع بارگذاری صفحات، با این عناصر تعامل داشته باشند؛ حتی اگر تصاویر یا محتوای بیشتری در حال بارگذاری باشد. در واقع، صفحات وب میتوانند با استفاده از تکنیکی به نام بارگذاری Lazy Loading، منابع را فقط زمانی که به آنها نیاز دارند بارگذاری کنند.
Lazy Loading یک تکنیک بهینه سازی وب است که به جای بارگذاری تمام منابع یک صفحه وب به طور همزمان، فقط منابعی را که در حال حاضر در دید کاربر قرار دارند بارگذاری میکند. این کار میتواند سرعت بارگذاری صفحه وب را به طور قابل توجهی بهبود بخشد؛ به خصوص برای صفحاتی که محتوای زیادی مانند تصویر و ویدئو دارند.
از نظر فنی، این روشها واقعا تاثیری در کاهش Latency شبکه ندارند و آن را بهبود نمیبخشند؛ اما میتوان آنها را یکسری راهکار دانست که تجربه کاربر از سرعت صفحه را ارتقا میدهند و باعث میشوند که تاخیر به چشم نیاید.
کاربران چگونه میتوانند Latency را از سمت خود رفع کنند؟
قبل از اقدام برای رفع تاخیر یا زمان پاسخگویی، باید بررسی کنید که منشاء تاخیر یا latency چیست؟ گاهی اوقات Latency شبکه (کاهش سرعت و عملکرد شبکه) از طرف سرور نیست، بلکه از سمت کاربر ایجاد میشود. در ادامه، یکسری از اقداماتی که کاربران برای رفع یا کاهش Latency از سمت خود میتوانند انجام دهند را نام میبریم:
- افزایش پهنای باند: شما به عنوان کاربر، همیشه این امکان را در اختیار دارید تا در صورتی که عملکرد ضعیف شبکه به یک مشکل دائمی و طولانی برایتان تبدیل شد، پهنای باند خود را افزایش دهید. اما به خاطر داشته باشید که افزایش پهنای باند تضمینی برای عملکرد بهتر وب سایت نیست.
- اتصال به اینترنت با سیم: اگر از Wi-Fi استفاده میکنید، سعی کنید به جای آن، از اتصال سیمی به اینترنت استفاده کنید که معمولا پایداری بیشتر، سرعت بالاتر و تاخیر کمتری نسبت به Wi-Fi دارد.
- بستن برنامههای غیرضروری: برنامههایی که در حال استفاده از اینترنت هستند را ببندید. این کار میتواند به آزاد شدن پهنای باند و کاهش تاخیر کمک کند.
- تغییر سرور DNS: میتوانید از سرور DNS دیگری مانند Google Public DNS استفاده کنید. گاهی اوقات تغییر سرور DNS میتواند به کاهش تاخیر کمک کند.
- استفاده از تجهیزات بهروز: Firmware دستگاههای اینترنتی خود را به طور منظم آپدیت و در صورت لزوم، آنها را به طور کامل تعویض کنید. در کل، همیشه باید از بهروز بودن تجهیزات اینترنت خود مطمئن باشید.
- ارتقا سخت افزار: اگر از مودم یا روتر قدیمی استفاده میکنید، ممکن است لازم باشد آنها را ارتقا دهید. مودمها و روترهای جدیدتر میتوانند به طور قابلتوجهی تاخیر را کاهش دهند.
- تماس با ISP: اگر هیچ یک از راهکارهای فوق کار نکرد، میتوانید با ISP خود تماس بگیرید و مشکل خود را با آنها مطرح کنید.
جمع بندی
تاخیر یا Latency شبکه به زمان لازم برای انتقال داده از یک نقطه به نقطه دیگر در شبکه اشاره دارد. این زمان شامل پردازش داده در هر نقطه از مسیر و همچنین، زمان انتقال فیزیکی داده میشود. عوامل مختلفی از جمله پهنای باند، فاصله، بار شبکه و تجهیزات شبکه میتوانند بر تاخیر یا زمان پاسخگویی شبکه تاثیرگذار باشند.
در این مقاله توضیح دادیم Latency چیست و چه عواملی باعث به وجود آمدن آن میشوند. نکته حائز اهمیت، این است که تاخیر همیشه از سمت سرور نیست و میتواند از طرف کاربر ایجاد شود. کاربران برای کاهش تاخیر میتوانند سخت افزار خود را ارتقاء دهند، تجهیزات خود را آپدیت کنند، سرور DNS را تغییر دهند و یکسری از اقدامات اصلاحی دیگر انجام دهند.