不使用缓存的卷曲命令


79

有没有办法告诉curl命令不要使用服务器端缓存?例如; 我有这个curl命令:

curl -v www.example.com

如何要求curl发送新请求以不使用缓存?

注意:我正在终端中寻找可执行命令。


1
是什么让您认为curl正在缓存请求?
佩卡

我说的是服务器端缓存;假设该网站正在使用memcache
tokhi 2015年

1
如果您有权访问服务器,则可以实现绕过缓存的自定义参数,否则,否。
Alex K.

在服务器端对应用程序进行编码,以接受一个参数以绕过缓存。
2015年

3
我认为Alex在说的是在URL中发送参数,说http://www.example.com/?caching=off您还可以发送自定义标头:stackoverflow.com/questions/356705 / ...但是,当然,您的服务器端应用程序必须了解这些命令并通过以下操作对其进行操作关闭缓存。如果有人可以禁用远程站点的缓存机制,那将是一个巨大的安全漏洞
Pekka

Answers:


157

我知道这是一个较旧的问题,但是我想为有相同问题的用户发布答案:

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

该curl命令服务器在其头请求中要求从Web服务器返回未缓存的数据。


1
为什么这被否决?这对我来说很棒,它回答了这个问题。
Monkpit

1
我同意Monkpit。这很好用,应该接受作为答案。
ArnaudR '16

9
这有时会有所帮助,但不能保证能正常工作。中间的服务器或代理可以忽略该no-cache请求。
wisbucky

68

-H 'Cache-Control: no-cache'由于远程服务器或介于两者之间的任何代理层都可以忽略该参数,因此不能保证该参数有效。如果它不起作用,则可以通过添加唯一的querystring参数,以老式方式进行。通常,服务器/代理会认为这是唯一的URL,而不使用缓存。

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

但是,您每次都必须使用不同的querystring值。否则,服务器/代理将再次匹配缓存。要每次自动生成一个不同的querystring参数,您可以使用date +%s,它将返回自epoch以来的秒数。

curl "http://www.example.com?$(date +%s)"

2
你刚刚救了我的一天!
约翰尼·布(Johnny Bui)

1
这是一个很好的老派技巧。值得称重的是黄金。谢谢!\ o /
NYCeyes
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.