Curl-Befehl ohne Verwendung des Cache

79

Gibt es eine Möglichkeit, den Befehl curl anzuweisen, den serverseitigen Cache nicht zu verwenden? z.B; Ich habe diesen Curl-Befehl:

curl -v www.example.com

Wie kann ich curl bitten, eine neue Anfrage zu senden, um den Cache nicht zu verwenden?

Hinweis : Ich suche nach einem ausführbaren Befehl im Terminal.

tokhi
quelle
1
Was lässt Sie denken, dass Curl die Anfrage zwischenspeichert?
Pekka
Ich spreche von serverseitigem Caching. Angenommen, die Website verwendetmemcache
Tokhi
1
Wenn Sie Zugriff auf den Server haben, können Sie einen benutzerdefinierten Parameter implementieren, der den Cache umgeht, andernfalls nein.
Alex K.
Codieren Sie Ihre Anwendung auf der Serverseite, um ein Argument zur Umgehung des Caches zu akzeptieren.
bufh
3
Ich denke, Alex spricht davon, einen Parameter in der URL zu http://www.example.com/?caching=offsenden. Sagen Sie , Sie könnten auch einen benutzerdefinierten Header senden: stackoverflow.com/questions/356705/… Aber natürlich muss Ihre serverseitige Anwendung diese Befehle verstehen und darauf reagieren Caching ausschalten. Wenn jemand die Caching-Mechanismen eines Remote-Standorts deaktivieren könnte, wäre dies eine klaffende Sicherheitslücke
Pekka

Antworten:

157

Ich weiß, dass dies eine ältere Frage ist, aber ich wollte eine Antwort für Benutzer mit derselben Frage veröffentlichen:

curl -H 'Cache-Control: no-cache' http://www.example.com

Dieser Curl-Befehlsserver fordert in seiner Header-Anforderung an, nicht zwischengespeicherte Daten vom Webserver zurückzugeben.

stoicbaby
quelle
1
Warum wurde das abgelehnt? Das hat bei mir super geklappt und die Frage beantwortet.
Monkpit
1
Ich stimme Monkpit zu. Dies funktioniert hervorragend und sollte als Antwort akzeptiert werden.
ArnaudR
9
Dies hilft manchmal, kann aber nicht garantiert funktionieren. Der Server oder die Proxys in der Mitte können die no-cacheAnforderung ignorieren .
wisbucky
68

Es -H 'Cache-Control: no-cache'wird nicht garantiert, dass das Argument funktioniert, da der Remote-Server oder alle dazwischen liegenden Proxy-Schichten es ignorieren können. Wenn es nicht funktioniert, können Sie es auf die altmodische Weise tun, indem Sie einen eindeutigen Querystring-Parameter hinzufügen. Normalerweise denken die Server / Proxys, dass es sich um eine eindeutige URL handelt, und verwenden den Cache nicht.

curl "http://www.example.com?foo123"

Sie müssen jedoch jedes Mal einen anderen Querystring-Wert verwenden. Andernfalls stimmen die Server / Proxys wieder mit dem Cache überein. Um jedes Mal automatisch einen anderen Querystring-Parameter zu generieren, können Sie verwenden date +%s, der die Sekunden seit der Epoche zurückgibt .

curl "http://www.example.com?$(date +%s)"
wisbucky
quelle
2
Du hast gerade meinen Tag gerettet!
Johnny Bui
1
Dies ist ein großartiger Tipp der alten Schule. Es ist Gold wert. Vielen Dank! \ o /
NYCeyes