这是一个相当长的问题,所以请耐心听完。
我想测试一下从 AWS 实例登录的 Akamai 服务器。因此,我开始运行 ab 基准测试。然而,他们似乎以惊人的速度下载了约 3 MB 的视频文件。我自然想看看发生了什么。以下是我为获取文件所做的操作
curl -v -o /dev/null
以上操作约需 5 秒完成。
接下来,我再次运行了相同的命令。这一次,它在约 200 毫秒内完成!自然,我的直觉告诉我文件正在某个地方缓存。
我的问题:
- curl 会缓存文件吗?如果会,有没有办法忽略它?
- 如果 curl 没有,ubuntu 是否会在 curl 下提取缓存?如果是,有没有办法忽略它?
- 考虑到这些要求,您认为除了 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 正在缓存名称的解析,这是响应时间差异的原因。
这只是一种理论。