Richieste di cache CURL?


19

Questa è una domanda piuttosto lunga, quindi abbi pazienza.

Volevo sottolineare il mio Akamai Server connesso da un'istanza AWS. Quindi, ho iniziato a eseguire un benchmark ab. Tuttavia, sembravano ridicolmente veloci scaricare file video da ~ 3 MB. Naturalmente volevo vedere cosa stava succedendo. Questo è quello che ho fatto per ottenere il file

curl -v -o / dev / null

Quanto sopra completato in ~ 5 secondi.

Successivamente, ho eseguito di nuovo lo stesso comando. Questa volta, è stato completato in ~ 200ms! Naturalmente, la mia intuizione dice che il file viene memorizzato nella cache da qualche parte.

Le mie domande:

  1. Curl memorizza i file nella cache? In tal caso, c'è un modo per ignorarlo?
  2. Se il ricciolo non funziona, ubuntu estrae una cache sotto il ricciolo? In tal caso, c'è un modo per ignorarlo?
  3. Dati i requisiti, pensi che ci potrebbe essere uno strumento di benchmarking diverso da ab che potrebbe servire allo scopo?

Grazie Akshay

Risposte:


15

Il client curl non sta memorizzando nella cache i file, ma la rete del server remoto potrebbe essere. Prova ad aggiungere una variabile stringa di query arbitraria all'URL per vedere se riesci a riprodurla.


La ringrazio per la risposta. Non sono riuscito ad aggiungere una stringa di query arbitraria poiché il server Akamai che utilizzo non accetta parametri di query! (forzando l'errore in quanto si basa sul digest del token salato di data e ora e URL). Tuttavia, sono stato in grado di generare più token per lo stesso percorso (essenzialmente più URL) e hai perfettamente ragione. curl non stava memorizzando alcun file nella cache - lo era il server remoto. Vai CDN! :)
Akshaya Shanbhogue l'

6

Tardivamente, prova:

curl -v -H "Cache-Control: no-cache"

Ciò dirà al web server di non memorizzare nella cache. Non interrompe i livelli sotto la memorizzazione nella cache a meno che non sia codificato per obbedire alle intestazioni.


0

Ho usato questo comando curl con un parametro cache buster.

curl http://example.com/static/changing_file?_=$(date +%s)

date +%sstampa i secondi dall'epoca, se si chiama l'url più di una volta al secondo si usa date +%s.%Nper aggiungere in nanosecondi.


0

È possibile utilizzare aggiungere una stringa di query casuale utilizzando la $RANDOMvariabile di ambiente:

curl --location --silent "https://git.io/lsf-e2e?$RANDOM"

Questo ha funzionato per me su file raw github.


-2

Forse il tuo DNS sta memorizzando nella cache la risoluzione del nome e questa è la ragione della differenza nel tempo di risposta.

È solo una teoria.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.