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.


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.


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)"

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.