CURL-Cache-Anforderungen?

19

Das ist eine ziemlich lange Frage, also nimm sie mit.

Ich wollte meinen über eine AWS-Instanz angemeldeten Akamai-Server betonen. Also habe ich angefangen, ab Benchmark zu laufen. Allerdings schienen sie unglaublich schnell zu sein, um ~ 3 MB Videodateien herunterzuladen. Natürlich wollte ich sehen, was los ist. Dies ist, was ich getan habe, um die Datei zu erhalten

curl -v -o / dev / null

Das obige ist in ~ 5 Sekunden erledigt.

Als Nächstes habe ich denselben Befehl erneut ausgeführt. Dieses Mal war es in ~ 200ms fertig! Natürlich sagt meine Intuition, dass die Datei irgendwo zwischengespeichert wird.

Meine Fragen:

  1. Curl-Cache-Dateien? Wenn ja, gibt es eine Möglichkeit, dies zu ignorieren?
  2. Wenn Curl es nicht tut, abstrahiert das Ubuntu einen Cache unter Curl? Wenn ja, gibt es eine Möglichkeit, dies zu ignorieren?
  3. Glauben Sie, dass es in Anbetracht der Anforderungen neben ab ein Benchmarking-Tool geben könnte, das diesen Zweck erfüllen könnte?

Vielen Dank, Akshay

Akshaya Shanbhogue
quelle

Antworten:

15

Der Curl-Client speichert keine Dateien im Cache, aber das Netzwerk des Remote-Servers kann dies durchaus sein. Fügen Sie der URL eine beliebige Abfragezeichenfolgenvariable hinzu, um festzustellen, ob Sie sie reproduzieren können.

Josip Rodin
quelle
Vielen Dank für Ihre Antwort. Ich konnte keine beliebige Abfragezeichenfolge hinzufügen, da der von mir verwendete Akamai-Server keine Abfrageparameter akzeptiert! (Erzwingen eines Fehlers, da er sich auf den Salted-Token-Digest von Zeitstempel und URL stützt). Ich konnte jedoch mehrere Token für denselben Pfad (im Wesentlichen mehrere URLs) generieren, und Sie haben absolut Recht. curl hat keine Datei zwischengespeichert - der Remote-Server war. Gehen Sie CDN! :)
Akshaya Shanbhogue
6

Versuchen Sie verspätet:

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

Dadurch wird der Webserver angewiesen, nicht zwischenzuspeichern. Stoppt Ebenen unter dem Caching nur, wenn sie so codiert sind, dass sie den Kopfzeilen entsprechen.

user171959
quelle
0

Ich habe diesen Curl-Befehl mit einem Cache-Buster-Parameter verwendet.

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

date +%sGibt die Sekunden seit der Epoche aus, wenn Sie die URL mehr als einmal in der Sekunde aufrufen und date +%s.%Nzum Hinzufügen von Nanosekunden verwenden.

Martlark
quelle
0

Sie können mithilfe der Umgebungsvariablen eine zufällige Abfragezeichenfolge hinzufügen $RANDOM:

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

Dies funktionierte für mich auf Github Raw-Dateien.

Édouard Lopez
quelle
-2

Möglicherweise zwischenspeichert Ihr DNS die Auflösung des Namens und dies ist der Grund für die unterschiedliche Reaktionszeit.

Es ist nur eine Theorie.

user315010
quelle