Una richiesta HEAD può ridurre il traffico del corpo della risposta quando confrontate i proxy. Su un handle PycURL esistente già configurato con la destinazione, il proxy e i timeout:

handle.setopt(pycurl.NOBODY, True)
handle.perform()
ttfb = handle.getinfo(pycurl.STARTTRANSFER_TIME)
prepared = handle.getinfo(pycurl.PRETRANSFER_TIME)

Leggete questi valori dopo un trasferimento riuscito e prima di chiudere l'handle. NOBODY seleziona HEAD per HTTP; non rimuove le intestazioni della richiesta, la negoziazione del proxy né il traffico TLS.

STARTTRANSFER_TIME è il tempo trascorso dall'inizio del trasferimento al primo byte della risposta. Include la preparazione e l'elaborazione del server, quindi misura questo percorso e questa destinazione, non il ritardo isolato del proxy. PRETRANSFER_TIME copre la preparazione del protocollo; sottraendolo resta comunque lavoro oltre il proxy stesso.

Mantenete costanti la destinazione, la politica di reindirizzamento e le condizioni di riutilizzo della connessione in tutti i confronti. I tempi di reindirizzamento si sommano. Una connessione nuova e un tunnel riutilizzato rispondono a domande diverse sulle prestazioni.

HEAD può anche comportarsi diversamente da GET. Usatelo per un'osservazione leggera della raggiungibilità o del tempo, poi validate separatamente il metodo reale quando scegliete un percorso per un'applicazione.

Articoli correlati