如何在不使用服务器端缓存的情况下调用 cURL?

How to call cURL without using server-side cache?

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

curl -v www.example.com

如何让 curl 发送新的请求而不使用缓存?

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

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

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

此 curl 命令在其 header 对来自网络服务器的 return non-cached 数据的请求中提供服务。

不保证 -H 'Cache-Control: no-cache' 参数有效,因为远程服务器或中间的任何代理层都可以忽略它。如果它不起作用,您可以通过添加唯一的查询字符串参数,以 old-fashioned 的方式进行。通常,servers/proxies 会认为它是唯一的 URL 而不会使用缓存。

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

不过,您每次都必须使用不同的查询字符串值。否则,server/proxies 将再次匹配缓存。要每次自动生成不同的查询字符串参数,您可以使用 date +%s,这将 return 自纪元以来的秒数。

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

-H 'Pragma: no-cache'-H 'Cache-Control: no-cache' 都没有帮助我。在带有“cmd+shift+r”(完全重新加载)的浏览器中,我看到了一个新版本,而不是终端中 curl 的输出。

如何自己调试

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

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

我的问题是我应该在查询字符串中使用单引号。

我的代码

if (event.queryStringParameters && event.queryStringParameters['Name']) {
    responseMessage = 'Hello, ' + event.queryStringParameters['Name'] + '!';
  }

我的要求

curl https://cssrq1srud.execute-api.us-east-1.amazonaws.com/serverless_lambda_stage/hello?Name=Terraform

returns zsh: no matches found

curl 'https://cssrq1srud.execute-api.us-east-1.amazonaws.com/serverless_lambda_stage/hello?Name=Terraform'   

returns {"message":"Hello, Terraform!"}