CURL кеширует запросы?

19

Это довольно длинный вопрос, так что терпите меня.

Я хотел подчеркнуть, что мой сервер Akamai вошел в систему с экземпляра AWS. Итак, я начал работать над тестом. Тем не менее, они казались невероятно быстрыми для загрузки ~ 3 МБ видеофайлов. Естественно, я хотел посмотреть, что происходит. Это то, что я сделал, чтобы получить файл

curl -v -o / dev / null

Вышеуказанное выполнено за ~ 5 секунд.

Затем я снова выполнил ту же команду. На этот раз все закончилось за ~ 200 мс! Естественно, моя интуиция говорит, что файл куда-то кешируется.

Мои вопросы:

  1. Есть ли кеширование файлов? Если так, есть ли способ игнорировать это?
  2. Если curl нет, разве Ubuntu абстрагирует кеш под curl? Если так, есть ли способ игнорировать это?
  3. Учитывая требования, как вы думаете, может ли быть инструмент для сравнения помимо ab, который может служить цели?

Спасибо, Акшай

Акшая Шанбхог
источник

Ответы:

15

Клиент curl не кэширует файлы, но сеть удаленного сервера вполне может быть. Попробуйте добавить произвольную переменную строки запроса к URL-адресу, чтобы посмотреть, сможете ли вы ее воспроизвести.

Иосип Роден
источник
Спасибо за ваш ответ. Я не мог добавить произвольную строку запроса, так как используемый мной сервер Akamai не принимает никаких параметров запроса! (принудительная ошибка, поскольку она основана на дайджесте соленых токенов метки времени и URL). Однако я смог сгенерировать несколько токенов для одного и того же пути (по сути, несколько URL), и вы абсолютно правы. curl не кэшировал ни одного файла - удаленный сервер был. Иди CDN! :)
Акшая Шанбхогу
6

С опозданием попробуйте:

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

Это скажет веб-серверу не кэшировать. Не останавливает слои ниже кеширования, если они не закодированы, чтобы подчиняться заголовкам.

user171959
источник
0

Я использовал эту команду curl с параметром кеша.

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

date +%sпечатает секунды, начиная с эпохи, если вы вызываете URL более одного раза в секунду, используйте date +%s.%Nдля добавления в наносекундах.

Martlark
источник
0

Вы можете использовать добавить случайную строку запроса с использованием в $RANDOMпеременном окружении:

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

Это работало для меня на сырых файлах github.

Эдуард Лопес
источник
-2

Может быть, ваш DNS кеширует разрешение имени, и это является причиной различия во времени ответа.

Это всего лишь теория.

user315010
источник