CURL是否缓存请求?


19

这是一个很长的问题,请耐心等待。

我想强调我从一个AWS实例登录的Akamai服务器。因此,我开始运行AB基准测试。但是,他们似乎下载3 MB视频文件的速度非常快。自然,我想看看发生了什么。这就是我获取文件的方法

curl -v -o / dev / null

以上步骤约需5秒钟。

接下来,我再次运行相同的命令。这次,它完成了〜200ms!自然,我的直觉说文件被缓存在某个地方。

我的问题:

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

谢谢阿克瑟

Answers:


15

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


谢谢您的回答。我无法添加任意查询字符串,因为我使用的Akamai服务器不接受任何查询参数!(因为它依赖于时间戳和URL的盐化令牌摘要,因此会产生强制错误)。但是,我能够为同一路径生成多个令牌(实际上是多个URL),您绝对正确。curl没有缓存任何文件-远程服务器是。去CDN!:)
Akshaya Shanbhogue 2015年

6

迟早地尝试:

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

这将告诉Web服务器不要缓存。除非将其编码为遵守标题,否则不要在缓存下停止图层。


0

我已经将此curl命令与缓存无效参数一起使用。

curl http://example.com/static/changing_file?_=$(date +%s)

date +%s如果您多次调用url,则打印自纪元以来的秒数,date +%s.%N用于添加纳秒。


0

您可以使用添加一个随机的查询字符串使用$RANDOM环境变量:

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

这为我在github原始文件上工作。


-2

也许您的dns正在缓存名称的解析,这就是响应时间不同的原因。

这只是一个理论。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.