如何在不使用服务器端缓存的情况下调用 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!"}
有没有办法告诉 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!"}