web-dev-qa-db-ja.com

CURLはリクエストをキャッシュしますか?

これはかなり長い質問なので、我慢してください。

AWSインスタンスからログインしているAkamaiサーバーにストレスをかけたかったのです。それで、私はabベンチマークを実行し始めました。ただし、3 MBのビデオファイルをダウンロードするのは途方もなく高速であるように見えました。当然何が起こっているのか見たかった。これは私がファイルを取得するためにしたことです

curl -v -o/dev/null

上記は約5秒で完了しました。

次に、同じコマンドをもう一度実行しました。今回は〜200msで完成!当然のことながら、私の直感では、ファイルはどこかにキャッシュされています。

私の質問:

  1. Curlはファイルをキャッシュしますか?もしそうなら、それを無視する方法はありますか?
  2. Curlがそうでない場合、ubuntuはcurlの下のキャッシュを抽象化しますか?もしそうなら、それを無視する方法はありますか?
  3. 要件を考慮して、目的に役立つab以外のベンチマークツールがあると思いますか?

ありがとう、Akshay

19

Curlクライアントはファイルをキャッシュしていませんが、リモートサーバーネットワークはキャッシュしている可能性があります。 URLに任意のクエリ文字列変数を追加して、再現できるかどうかを確認してください。

15
Josip Rodin

遅ればせながら、試してみてください:

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

キャッシュしないようにWebサーバーに指示します。ヘッダーに従うようにコーディングされていない限り、キャッシュの下のレイヤーを停止しません。

6
user171959

Add randomquery stringusing the $RANDOM環境変数:

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

これはgithub rawファイルで機能しました。

0
Édouard Lopez

このcurlコマンドをキャッシュ無効化パラメーターと共に使用しました。

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

date +%sは、エポックからの秒数を出力します。1秒間に2回以上URLを呼び出す場合は、date +%s.%Nを使用してナノ秒を追加します。

0
Martlark