Time to First Byte چیست و چگونه آن را بهبود دهیم
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 11 دقیقه

Time to First Byte چیست و چگونه آن را بهبود دهیم

شاید عبارت Time to First Byte را شنیده باشید، اما به نظر می‌رسد اکثر افراد از درک این مفهوم به نوعی فرار می‌کنند. یا به جهت این‌که پیچیده به نظر می‌رسد یا به این دلیل که مفهومی انتزاعی است، اما حقیقت چیز دیگری می‌گوید.

این اصطلاح در واقع چیزی نیست که فقط باید افراد متخصص آن را درک کنند. بلکه لازم است همه کسانی که در حوزه توسعه وب‌سایت فعالیت دارند، آن را یاد بگیرند و در عمل به کار ببرند.

در این مقاله قصد داریم خیلی ساده برای شما توضیح دهیم که Time to First Byte چیست و چه تاثیری بر عملکرد سایت شما می‌گذارد، همچنین اگر می‌خواهید بهترین تجربه ممکن را به مخاطبان خود ارائه دهید باید به این موضوع توجه زیادی داشته باشید.

Time to First Byte چیست؟

زمان رسیدن به اولین بایت (TTFB) معیاری است که برای پاسخگویی یک وب‌سرور یا سایر منابع شبکه مورد استفاده قرار می‌گیرد.

TTFB در واقع مدت زمان درخواست HTTP توسط کاربر یا کلاینت را تا دریافت اولین بایت از صفحه توسط مرورگر اندازه‌گیری می‌کند. به عبارت دیگر زمان اتصال سوکت، زمان ارسال درخواست HTTP و زمان صرف شده برای دریافت اولین بایت صفحه را شامل می‌شود. هرچند گاهی اوقات اشتباها به عنوان یک عملیات post-DNS در نظر گرفته می‌شود. اما محاسبه اصلی TTFB همیشه شامل تأخیر شبکه در اندازه‌گیری زمان لازم برای شروع بارگیری یک منبع است.

توضیح بالا یک تعریف فنی است که مستقیما از ویکی‌پدیا گرفته شده ‌است. حالا بیایید آن را به زبان ساده‌تر بیان کنیم تا برای همه قابل فهم باشد.

Time to First Byte مدت زمانی است که از لحظه فشار دادن کلید Enter تا لود وب‌سایت و رندر شدن آن طول می‌کشد. اگر بخواهیم این موضوع را در قالب بازی‌های ویدیویی مثال بزنیم، مشابه تاخیر شما در حین بازی خواهد بود. این تأخیر در واقع همان مدت زمان پاسخگویی سایت شماست.

چه عواملی بر TTFB تأثیر می‌گذارد؟

زمان رسیدن به اولین بایت را می‌توان با فاکتورهای متعددی نشان داد، اما از آنجایی که این یک مقاله مربوط به وردپرس است، می‌خواهیم همه چیز را محدود به مواردی کنیم که تنها در زمان استقرار وردپرس تحت تأثیر قرار می‌گیرند.

  • زمان پاسخگویی DNS
  • پیکربندی و عملکرد سرور (PHP و وب‌سرور)
  • پلاگین‌ها و قالب‌ها
  • حافظه کش

هر یک از این عوامل، تأخیری را به مدت زمان رندر شدن وب‌سایت اضافه می‌کند. اینطور نیست که برخی از آن‌ها بر تأخیر تأثیر بگذارند، بلکه همه با هم جمع شده و به تأخیر بیشتر منجر می‌شوند. بنابراین در یک سناریوی ایده‌آل، همه چیز باید به اندازه کافی سریع باشد تا زمان بسیار خوبی به منظور رسیدن به اولین بایت به دست آید و حتی اگر یک پارامتر در این فرایند به زمان زیادی برای پردازش نیاز داشته باشد، موجب کندی TTFB خواهد شد.

این نکته مهمی است، زیرا بر هر کاری که شما یا کاربران در سایتتان انجام می‌دهید تأثیر می‌گذارد. به این ترتیب هر بار که یک کاربر روی لینک، تصویر، پست و یا صفحه کلیک می‌کند TTFB محاسبه می‌شود. پس هر کلیک تاخیر قابل توجهی داشته و تجربه کاربری را تحت تأثیر قرار می‌دهد.

1. زمان پاسخگویی DNS

کیفیت DNS اولین فاکتور تاثیرگذار است. بنابراین همیشه مطمئن شوید که از سرورهای DNS مناسب استفاده می‌کنید؛ یعنی دارای نودهایی باشند که در سراسر دنیا پخش شده‌اند تا بهترین کیفیت ممکن را به دست آورند. یک راه‌حل خوب برای کاهش TTFB در این مرحله، استفاده از یک سرویس جهانی محبوب مانند CloudFlare است. چرا که این نوع سرویس Global DNS Caching را پیاده‌سازی می‌کند و برای کاهش TTFB از طریق عملیات کش بسیار کارساز است.

2. پیکربندی سرور

فاکتور دوم تاثیرگذار سرور است. اینجا جایی است که هاست شما شکل می‌گیرد. یعنی نوع پیکربندی وب‌سروری که از آن استفاده می‌شود همراه با تکنیک‌های کش اجرا شده، به میزان زیادی می‌تواند TTFB را کاهش دهد. به عنوان مثال اگر سرور شما مفسر قدیمی PHP 5.4 را پیاده‌سازی کند، TTFB بسیار بالایی دریافت خواهید کرد. در حالی که استفاده از پیکربندی مدرن PHP 7.1 این زمان را به میزان زیادی کاهش می‌دهد.

به این دلیل که مفسر PHP نقش مهمی در فرآیند برعهده دارد. هر بار که یک صفحه وب‌سایت یا پست وبلاگ را بدون کش درخواست می‌کنید، سرور باید فایل‌های PHP مورد نظر را پردازش کند تا بتواند آن‌ها را در قالب HTML به مرورگر شما انتقال دهد. به تبع هرچه فایل‌های PHP پیچیده‌تر باشند، زمان بیشتری طول می‌کشد تا پردازش شوند و به مرورگر برگردند.

پس اگر هاست شما حافظه کش را پیاده‌سازی کند، مدت زمان درخواست دوم کاهش می‌یابد. زیرا به جای پردازش مجدد فایلهای PHP، نسخه کش آن‌ها را پردازش می‌کند.

همچنین عملکرد سرور نیز نقش مهمی در کل فرآیند خواهد داشت. به این صورت که هرچه CPU سریعتر باشد و هاست منابع بیشتری را به شما اختصاص دهد، فایل‌ها سریع‌تر پردازش می‌شوند و بنابراین TTFB شما کاهش می‌یابد.

اکنون می‌توانید بفهمید که دو نوع خدمات میزبانی وجود دارد، یکی سرویس عمومی بدون کش و دیگری سرویس اختصاصی که مکانیزم کش را برای PHP پیاده‌سازی می‌کند و TTFB را به مقدار قابل توجهی پایین می‌آورد.

3. پلاگین‌ها و قالب‌ها

این مورد سومین فاکتور تاثیرگذار در تعیین TTFB سایت شماست، در ادامه به شما نشان خواهیم داد که چگونه چنین چیزی ممکن است.

قضیه از این قرار است که وردپرس چندین فایل PHP را برای پردازش به هاست ارسال می‌کند و هرچه فایل‌ها پیچیده‌تر باشند، پردازش آن‌ها زمان بیشتری می‌برد. خود وردپرس هم توسط پلاگین‌ها کار می‌کند و این پلاگین‌ها کدی را به پردازش نهایی PHP اضافه می‌کنند. بنابراین با در نظر گرفتن این موضوع، به وضوح می‌توانید بفهمید که هر چه تعداد پلاگین‌های بیشتری نصب کرده باشید، زمان بیشتری هم برای پردازش در هاست شما صرف شده و در نتیجه TTFB افزایش خواهد یافت.

پس به عنوان یک قاعده کلی در نظر بگیرید که همیشه داشتن پلاگینهای کمتر بهتر است. البته یک پلاگین با کد ضعیف می‌تواند بسیار بدتر از ده پلاگین با کدنویسی حرفه‌ای باشد. اما به طور کلی کاهش تعداد پلاگین‌ها مدیریت به‌روزرسانی‌ها را برای شما آسان‌تر کرده و سرعت سایتتان را نیز افزایش می‌دهد. در زیر نمونه‌ای معقولانه از تعداد پلاگینهای نصب شده آورده‌ایم.

اما نمونه بعدی می‌تواند مشکل‌ساز باشد (باز هم تاکید می‌کنیم که تا حدی به نحوه کدنویسی پلاگین‌ها نیز بستگی دارد).

4. HTML Caching

آخرین و مهم‌ترین فاکتور مربوط به مکانیزم کشی است که می‌خواهید در وردپرس خود پیاده‌سازی کنید. اگرچه انواع مختلفی از مکانیزم‌های کش در وردپرس وجود دارد، اما موثرترین آن‌ها HTML Caching است.

داشتن یک پلاگین مناسب مانند KeyCDN Cache Enabler تأثیر فوق‌العاده‌ای بر TTFB شما خواهد داشت، حتی بیشتر از خود هاست! به این صورت که پس از فعال شدن حافظه کش، تمام فایل‌ها به HTML تبدیل می‌شوند، بنابراین کاربران دیگر نیازی به عبور از پیش‌پردازنده PHP در هاست نخواهند داشت و فقط خود وب‌سرور مسئول ارائه محتوا خواهد بود. همچنین اگر از هاستی استفاده کنید که از nginx به جای apache به عنوان وب‌سرور اصلی پشتیبانی کند، می‌توانید سرعت فرایند را بیشتر هم کنید، همانطور که توضیح داده‌ایم.

چرا TTFB اهمیت دارد؟

حالا می‌خواهیم در مورد اهمیت TTFB صحبت کنیم. موارد زیر نمونه‌هایی واقعی از پیکربندی‌های یک وب‌سایت در سرورهای مختلف است که می‌تواند معیار مفیدی در نظر گرفته شود.

یک وب‌سایت کند روی یک سرور کند

داشتن یک سایت کند می‌تواند برای TTFB دردسرساز باشد و اگر به استفاده از هاست مناسب اهمیت نمی‌دهید، باید خود را آماده کنید تا با بدترین نتیجه ممکن روبه‌رو شوید.

بیایید این سایت را با جزئیات تجزیه و تحلیل کنیم. برای این منظور از Pingdom Tools استفاده می‌کنیم، زیرا یک ابزار عالی برای آنالیز TTFB است. از این طریق می‌توانیم جزئیات را در اولین درخواست انجام شده به سایت مشاهده کنیم.

همانطور که می‌بینید، سایت دارای TTFB تقریبا 2/4 ثانیه است. به این معنی که 2/4 ثانیه طول می‌کشد تا وب‌سایت به طور کامل در دسترس قرار گیرد.

اکنون این زمان را در تمام کلیک‌هایی که کاربر انجام می‌دهد ضرب کنید و ببینید چقدر می‌تواند آزاردهنده باشد. البته زمان رندر هر صفحه نیز به مقدار TTFB اضافه می‌شود، در این صورت نتیجه فاجعه‌بار خواهد بود؛ زیرا در مجموع ممکن است 7 ثانیه به طول بیانجامد.

بنابراین مجموعه چندین عامل منجر به این اتفاق می‌شود: وب‌سایت ضعیف و بهینه نشده بدون مکانیزم کش، هاست بسیار کند و مفسر PHP منسوخ شده که هنوز PHP 5.4 را اجرا می‌کند. حتی زمانی که از cloudflare به عنوان مکانیزم کش خارجی نیز استفاده شود، اگر سایت شما و هاست با یکدیگر سازگاری نداشته باشند، کاری برای بهبود وضعیت نمی‌توان انجام داد.

یک وب‌سایت سریع بر روی یک سرور کند

بیایید ببینیم وقتی یک سایت سریع را روی یک سرور کند ​​که از Apache و PHP 7.1 استفاده می‌کند قرار دهیم، چه اتفاقی می‌افتد.

در سایتی که کمتر از 10 پلاگین روی آن وجود دارد با مکانیزم کش غیرفعال، نتیجه حداقل 5 برابر بهتر از حالت قبلی است. می‌بینید که TTFB اکنون 521 میلی ثانیه نشان داده شده‌است. یعنی سایت از لحظه‌ای که از سرور واکشی شده تا زمانی که به کامپیوتر شما می‌رسد تقریبا 5/0 ثانیه طول می‌کشد تا شروع به رندر شدن در مرورگر کند.

اما وقتی مکانیزم کش را در وب‌سایت فعال کنیم چه اتفاقی می‌افتد؟ به نوعی معجزه می‌شود. زیرا تنها در ۱۵۲ میلی‌ثانیه می‌تواند نتیجه عالی به دست آورد. بنابراین می‌بینید که مکانیزم کش وردپرس چقدر روی نتایج تأثیر می‌گذارد.

یک وب‌سایت کند روی یک سرور سریع

حالا ببینیم اگر یک سایت کند را روی یک سرور سریع قرار دهیم چه می‌شود.

یک سرور بهینه‌سازی شده که Plesk را با nginx و PHP 7.1 اجرا می‌کند، 29/1 ثانیه طول می‌کشد تا سایتی با بیش از 27 پلاگین را رندر کند.

اما هنگامی که مکانیزم کش را از طریق KeyCDN Cache Enabler فعال می‌کنیم، نتیجه شگفت‌انگیز است. چرا که این سایت کند TTFB خود را به 400 میلی ثانیه کاهش می‌دهد.

یک وب‌سایت سریع بر روی یک سرور سریع

حال بیایید وضعیت ایده‌آل را ببینیم. یعنی یک وب‌سایت سریع که بر روی یک سرور سریع اجرا می‌شود.

همان سروری که در یک سایت کند TTFB با مقدار 29/1 ثانیه میدهد، در یک سایت سریع و بدون کش به کمتر از 5/0 ثانیه می‌رسد.

اگر کش را نیز فعال کنیم، پاسخی کمتر از 150 میلی‌ثانیه خواهیم گرفت که فوق‌العاده است.

نتایج Benchmark

در زیر همه نتایج را روی یک نمودار بزرگ ترسیم کرده‌ایم.

می‌بینید که هاست نقش مهمی در کاهش TTFB، بهبود تاخیر و همچنین عملکرد کلی سایت دارد.

جمع‌بندی

داشتن یک TTFB خوب تضمین می‌کند که سایتی سریع و پاسخگو خواهید داشت، به علاوه زمان رندر کلی را کاهش می‌دهد و به عنوان یک معیار عالی برای تعیین عملکرد وب‌سایت در نظر گرفته می‌شود. معمولا هر چه مقدار TTFB بیشتر باشد، سرعت سایت نیز کندتر خواهد بود. پس اندازه‌گیری TTFB برای هر وب‌سایتی امری ضروری است، زیرا این زمان‌بندی می‌تواند برای تعیین نیازمندی‌ها در نصب وردپرس نیز استفاده شود.

پیشنهاد می‌کنم به عنوان یک تمرین ساده بر روی سایت خود همه پلاگین‌ها را غیرفعال کرده و به قالب اصلی وردپرس سوییچ کنید، سپس مجددا مقدار TTFB را اندازه‌گیری نمایید، قول می‌دهم از دیدن نتیجه شگفت‌زده خواهید شد.

اما تمام آنچه که گفته شد نیز صرفا ملاک تعیین‌کننده TTFB نیستند، چون عوامل دیگری از جمله عملکرد پایگاه داده، پهنای باند در دسترس و سرعت شبکه هم قطعا تاثیرگذار خواهند بود.

امیدوارم این مقاله فرصتی را برای تست TTFB سایت‌تان فراهم کرده باشد. شما هم نظرات خود را در این مورد برای ما ارسال کنید.

منبع

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
5 از 1 رای

/@heshmati74
عرفان حشمتی
Full-Stack Web Developer

مهندس معماری سیستم های کامپیوتری، طراح و توسعه دهنده وب سایت

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

عرفان حشمتی

Full-Stack Web Developer