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


19

これは非常に長い質問なので、ご容赦ください。

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

curl -v -o / dev / null

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

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

私の質問:

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

ありがとう、アクシェイ

回答:


15

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


ご回答ありがとうございます。使用するAkamaiサーバーはクエリパラメーターを受け入れないため、任意のクエリ文字列を追加できませんでした。(タイムスタンプとURLのソルトトークンダイジェストに依存しているため、エラーを強制します)。しかし、同じパス(複数のURL)に対して複数のトークンを生成することができたので、あなたは間違いなく正しいです。curlはファイルをキャッシュしていませんでした-リモートサーバーはそうでした。Go CDN!:)
アクシャヤシャンボゲ

6

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

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

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


0

このcurlコマンドとcache busterパラメーターを使用しました。

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

date +%sdate +%s.%Nナノ秒単位でURLを1 秒以上呼び出すと、エポックからの秒数が出力されます。


0

環境変数を使用して、ランダムクエリ文字列追加でき$RANDOMます。

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

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


-2

たぶんあなたのDNSが名前の解決をキャッシュしているので、これが応答時間の違いの理由です。

それは単なる理論です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.