O CURL armazena em cache solicitações?


19

Esta é uma pergunta bastante longa, então tenha paciência comigo.

Eu queria enfatizar o meu servidor Akamai conectado a partir de uma instância da AWS. Então, comecei a executar um benchmark. No entanto, eles pareciam ridiculamente rápidos para baixar ~ 3 MB de arquivos de vídeo. Naturalmente, eu queria ver o que está acontecendo. Foi o que fiz para obter o arquivo

curl -v -o / dev / null

O acima foi concluído em ~ 5 segundos.

Em seguida, executei o mesmo comando novamente. Desta vez, completou em ~ 200ms! Naturalmente, minha intuição diz que o arquivo está sendo armazenado em cache em algum lugar.

Minhas perguntas:

  1. Enrola arquivos de cache? Se sim, existe uma maneira de ignorá-lo?
  2. Se o curl não funciona, o ubuntu abstrai um cache abaixo do curl? Se sim, existe uma maneira de ignorá-lo?
  3. Dado os requisitos, você acha que poderia haver uma ferramenta de benchmarking à parte de ab que poderia servir ao objetivo?

Obrigado, Akshay

Respostas:


15

O cliente curl não está armazenando arquivos em cache, mas a rede do servidor remoto pode estar. Tente adicionar uma variável de string de consulta arbitrária ao URL para ver se você pode reproduzi-lo.


Obrigado pela sua resposta. Não pude adicionar uma sequência de consulta arbitrária, pois o servidor Akamai que eu uso não aceita nenhum parâmetro de consulta! (forçando o erro, pois se baseia no resumo de token salgado do carimbo de data e hora e URL). No entanto, consegui gerar vários tokens para o mesmo caminho (essencialmente vários URLs) e você está absolutamente certo. o curl não estava armazenando em cache nenhum arquivo - o servidor remoto estava. Vá CDN! :)
Akshaya Shanbhogue

6

Depois, tente:

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

Isso informará o servidor da Web para não armazenar em cache. Não interrompe as camadas abaixo do cache, a menos que seja codificado para obedecer aos cabeçalhos.


0

Eu usei esse comando curl com um parâmetro de buster de cache.

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

date +%simprime os segundos desde a época, se você chamar o URL mais de uma vez por segundo date +%s.%Npara adicionar nanossegundos.


0

Você pode adicionar uma sequência de consulta aleatória usando a $RANDOMvariável de ambiente:

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

Isso funcionou para mim nos arquivos brutos do github.


-2

Talvez o seu DNS esteja armazenando em cache a resolução do nome e esse seja o motivo da diferença no tempo de resposta.

É apenas uma teoria.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.