لنفترض أن cURL يفتح اتصال TCP جديدًا بوكيل HTTP عادي، ويُنشئ نفقًا لـHTTPS، ثم ينزّل استجابة واحدة. تصف هذه التوقيتات محطات رصدها cURL على ذلك المسار.

القيمةالمحطة المقيسة من بداية النقل
time_connectاكتمل الاتصال بالوكيل
time_appconnectاكتملت مصافحة TLS المعنية
time_starttransferوصل أول بايت من الاستجابة
time_totalانتهى النقل

لتوضيح عملية التقاط في صدفة POSIX:

curl --proxy http://proxy.example:8080 \
  --output /dev/null \
  --write-out 'connect=%{time_connect} tls=%{time_appconnect} first=%{time_starttransfer} total=%{time_total}\n' \
  https://example.com/

لإجراء مقارنة HTTPS عامة مسموح بها دون بيانات اعتماد للوكيل، يمكن أن يحل مدخل HTTP من قائمة وكلاء HTTP محل الوكيل المذكور في المثال. القيم بالثواني التراكمية. وهي ليست أربع مدد مستقلة تُجمع معًا. أبقِ خطأ النقل وحالة الاستجابة إلى جانب الأرقام: الاتصال الفاشل أو النفق المرفوض لم يصل إلى كل محطة لاحقة.

ماذا يخبرك الطرح

بالنسبة إلى استجابة واحدة ناجحة، يصف time_total ناقص time_starttransfer الفترة المتبقية بعد وصول أول بايت. وهي في الأساس نقل الاستجابة المتأخر وما يرتبط به من عمل على جهة العميل. وليست زمن اتصال الوكيل بالموقع، لأن ذلك حدث قبل أن تصل الاستجابة.

وعلى المنوال نفسه، قد يشمل time_starttransfer ناقص time_connect إنشاء النفق وTLS وانتظارات الشبكة العلوية وعمل الخادم ومعالجة أخرى. وتسمية الفرق كله «زمن استجابة الوكيل» تنسب مكوّنات متعددة إلى طرف واحد.

ولفصل انتظارات DNS والاتصال والاستجابة على جهة الوكيل، احصل على أرصاد أو آثار مقابلة من جانب الوكيل. فالعميل لا يتلقى تلك الطوابع الزمنية الداخلية بمجرد استخدام HTTP CONNECT.

قارن عمليات نقل مكافئة. فإعادة التوجيه تضيف توقيتات طلبات متعددة، بينما تغيّر إعادة استخدام الاتصال والتعددية أعمال التهيئة اللازمة. وسجّل تلك الظروف قبل مقارنة أرقام وكيل بأرقام وكيل آخر.

مقالات ذات صلة