¿CURL solicita caché?

19

Esta es una pregunta bastante larga, así que tengan paciencia conmigo.

Quería enfatizar que mi servidor Akamai inició sesión desde una instancia de AWS. Entonces, comencé a ejecutar un punto de referencia ab. Sin embargo, parecían ridículamente rápidos para descargar ~ 3 MB de archivos de video. Naturalmente, quería ver qué estaba pasando. Esto es lo que hice para obtener el archivo

curl -v -o / dev / null

Lo anterior completado en ~ 5 segundos.

Luego, ejecuté el mismo comando nuevamente. ¡Esta vez, se completó en ~ 200 ms! Naturalmente, mi intuición dice que el archivo se está almacenando en caché en alguna parte.

Mis preguntas:

  1. ¿Curl archivos de caché? Si es así, ¿hay alguna forma de ignorarlo?
  2. Si curl no lo hace, ¿ubuntu extrae un caché debajo de curl? Si es así, ¿hay alguna forma de ignorarlo?
  3. Teniendo en cuenta los requisitos, ¿cree que podría haber una herramienta de evaluación comparativa aparte de ab que podría servir para el propósito?

Gracias Akshay

Akshaya Shanbhogue
fuente

Respuestas:

15

El cliente curl no está almacenando en caché los archivos, pero la red del servidor remoto podría estarlo. Intente agregar una variable de cadena de consulta arbitraria a la URL para ver si puede reproducirla.

Josip Rodin
fuente
Gracias por su respuesta. ¡No pude agregar una cadena de consulta arbitraria ya que el servidor Akamai que uso no acepta ningún parámetro de consulta! (error forzado ya que se basa en un resumen de token salado de marca de tiempo y URL). Sin embargo, pude generar múltiples tokens para la misma ruta (esencialmente múltiples URL) y tienes toda la razón. curl no estaba almacenando en caché ningún archivo, el servidor remoto sí. Go CDN! :)
Akshaya Shanbhogue
6

Tardíamente, intente:

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

Eso le dirá al servidor web que no guarde en caché. No detiene las capas debajo del almacenamiento en caché a menos que esté codificado para obedecer los encabezados.

usuario171959
fuente
0

He usado este comando curl con un parámetro buster de caché.

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

date +%simprime los segundos desde la época, si llama a la url más de una vez por segundo, use date +%s.%Npara agregar nanosegundos.

Martlark
fuente
0

Puede usar agregar una cadena de consulta aleatoria usando la $RANDOMvariable de entorno:

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

Esto funcionó para mí en archivos sin procesar de github.

Édouard Lopez
fuente
-2

Tal vez su dns esté almacenando en caché la resolución del nombre y esta es la razón de la diferencia en el tiempo de respuesta.

Es solo una teoría.

usuario315010
fuente