CURL 是否缓存请求?

CURL 是否缓存请求?

这是一个相当长的问题,所以请耐心听完。

我想测试一下从 AWS 实例登录的 Akamai 服务器。因此,我开始运行 ab 基准测试。然而,他们似乎以惊人的速度下载了约 3 MB 的视频文件。我自然想看看发生了什么。以下是我为获取文件所做的操作

curl -v -o /dev/null

以上操作约需 5 秒完成。

接下来,我再次运行了相同的命令。这一次,它在约 200 毫秒内完成!自然,我的直觉告诉我文件正在某个地方缓存。

我的问题:

  1. curl 会缓存文件吗?如果会,有没有办法忽略它?
  2. 如果 curl 没有,ubuntu 是否会在 curl 下提取缓存?如果是,有没有办法忽略它?
  3. 考虑到这些要求,您认为除了 ab 之外是否还有其他基准测试工具可以满足这一目的?

谢谢你,Akshay

答案1

curl 客户端没有缓存文件,但远程服务器网络可能缓存了。尝试向 URL 添加任意查询字符串变量,看看是否可以重现它。

答案2

迟了,尝试一下:

curl -v -H "Cache-Control: no-cache"

这将告诉 Web 服务器不要缓存。除非编码遵循标头,否则不会停止下层缓存。

答案3

您可以使用添加随机的请求参数使用环境$RANDOM变量:

curl --location --silent "https://git.io/lsf-e2e?$RANDOM"

这对我适用于 github 原始文件。

答案4

也许您的 DNS 正在缓存名称的解析,这是响应时间差异的原因。

这只是一种理论。

相关内容