Odczyt czasów proxy w cURL po stronie klienta
Interpretuj czasy połączenia, TLS, pierwszego bajtu i łączny, nie przypisując nieobserwowanej pracy wyżej w łańcuchu pomiarowi dotyczącemu tylko proxy.
Załóżmy, że cURL otwiera nowe połączenie TCP do zwykłego proxy HTTP, ustanawia tunel HTTPS i pobiera jedną odpowiedź. Czasy opisują etapy, które cURL zaobserwował na tej drodze.
| Wartość | Etap mierzony od początku transmisji |
|---|---|
| time_connect | Połączenie z proxy zostało nawiązane |
| time_appconnect | Odpowiednie uzgadnianie TLS zostało zakończone |
| time_starttransfer | Odebrano pierwszy bajt odpowiedzi |
| time_total | Transmisja się zakończyła |
Dla przykładowego zapisu w powłoce 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/
Do dozwolonego publicznego porównania HTTPS bez danych uwierzytelniających proxy można użyć wpisu HTTP z listy proxy HTTP zamiast przykładowego proxy. Wartości to sekundy narastające. To nie są cztery niezależne czasy, które się sumuje. Trzymaj błąd transmisji i status odpowiedzi obok liczb: nieudane połączenie lub odrzucony tunel nie dotarło do każdego późniejszego etapu.
Co może powiedzieć odejmowanie
Dla jednej udanej odpowiedzi time_total minus time_starttransfer opisuje pozostały przedział po nadejściu pierwszego bajtu. To głównie późniejsza transmisja odpowiedzi i związana z nią praca po stronie klienta. To nie jest czas proxy na połączenie ze stroną, bo nastąpiło to wcześniej, zanim odpowiedź mogła dotrzeć.
Podobnie time_starttransfer minus time_connect może obejmować budowę tunelu, TLS, oczekiwania sieci nadrzędnej, pracę serwera i inne przetwarzanie. Nazywanie całej różnicy „opóźnieniem proxy” przypisuje kilka składników jednemu uczestnikowi.
Aby oddzielić oczekiwania proxy na DNS, połączenie i odpowiedź, uzyskaj odpowiednie obserwacje lub ślady po stronie proxy. Klient nie otrzymuje tych wewnętrznych znaczników czasu tylko dlatego, że używa HTTP CONNECT.
Porównuj równoważne transmisje. Przekierowania dodają czasy wielu żądań, a ponowne użycie połączeń i multipleksowanie zmieniają, jaka praca przygotowawcza jest potrzebna. Zapisz te warunki, zanim porównasz liczby jednego proxy z drugim.