สมมติว่า cURL เปิดการเชื่อมต่อ TCP ใหม่ไปยังพร็อกซี HTTP ธรรมดา สร้างอุโมงค์ HTTPS และดาวน์โหลดการตอบกลับหนึ่งรายการ เวลาเหล่านี้บรรยายจุดสำคัญที่ cURL สังเกตบนเส้นทางนั้น

ค่าจุดสำคัญที่วัดจากการเริ่มต้นการถ่ายโอน
time_connectการเชื่อมต่อกับพร็อกซีเสร็จสิ้น
time_appconnectการจับมือ TLS ที่เกี่ยวข้องเสร็จสิ้น
time_starttransferได้รับไบต์แรกของการตอบกลับ
time_totalการถ่ายโอนสิ้นสุดลง

สำหรับการบันทึกใน POSIX shell เป็นตัวอย่าง:

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

เปรียบเทียบการถ่ายโอนที่เทียบเท่ากัน การเปลี่ยนเส้นทางเพิ่มเวลาของหลายคำขอ ขณะที่การใช้การเชื่อมต่อซ้ำและการมัลติเพล็กซ์เปลี่ยนว่าต้องเตรียมงานใด บันทึกเงื่อนไขเหล่านั้นก่อนเปรียบเทียบตัวเลขของพร็อกซีหนึ่งกับอีกตัวหนึ่ง

บทความที่เกี่ยวข้อง