不使用缓存的卷曲命令

tok*_*khi 58 linux bash memcached curl caching

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

curl -v www.example.com

我怎么能请求curl发送一个不使用缓存的新请求?

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

小智 126

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

curl -H 'Cache-Control: no-cache' http://www.example.com
Run Code Online (Sandbox Code Playgroud)

此curl命令在其头请求中服务器,以从Web服务器返回非缓存数据.

  • 这有时会有所帮助,但不能保证有效.中间的服务器或代理可以忽略"no-cache"请求. (6认同)
  • 为什么这被否决了?这对我很有用,它回答了这个问题。 (3认同)
  • 我同意 Monkpit。这很好用,应该被接受为答案。 (2认同)

wis*_*cky 47

-H 'Cache-Control: no-cache'由于远程服务器或其间的任何代理层都可以忽略它,因此无法保证该参数有效.如果它不起作用,您可以通过添加唯一的查询字符串参数以旧式方式执行此操作.通常,服务器/代理会认为它是唯一的URL而不是使用缓存.

curl "http://www.example.com?foo123"
Run Code Online (Sandbox Code Playgroud)

但是,每次都必须使用不同的查询字符串值.否则,服务器/代理将再次匹配缓存.要每次自动生成不同的查询字符串参数,您可以使用date +%s,这将返回自纪元以来的秒数.

curl "http://www.example.com?$(date +%s)"
Run Code Online (Sandbox Code Playgroud)

  • 你刚刚拯救了我的一天! (4认同)
  • 这是一个很棒的老派技巧。相当于黄金的重量。谢谢你!\o/ (2认同)

Aid*_*din 10

既没有帮助我-H 'Pragma: no-cache',也没有-H 'Cache-Control: no-cache'帮助我。在使用“cmd+shift+r”(完全重新加载)的浏览器中,我看到的版本比curl终端中的输出要新。

如何自己调试

为了获得完全相同的结果,我转到浏览器 > F12(开发工具)> 网络/请求 > 右键单击​​请求 >“复制为 cURL”,并获得与浏览器调用等效的 cURL命令。

然后,我将其粘贴到终端中,并开始一一删除参数,直到我发现令人惊讶的是,这--compressed对我的情况产生了影响。(调用 CloudFront AWS)