curl -i 和 curl -I 返回不同的结果

Tej*_*har 3 macos ssl curl caching varnish

我的理解是,curl -i并且curl -I会返回几乎相同的结果,除了curl -i会返回标准输出标题,curl -I并且只会返回标题——两者的标题是相同的。我们一直在用 Varnish 做一些 gzip 和 un-gzip 测试,偶然发现了curl -i显示X-Cache: HITcurl -I返回的奇怪现象X-Cache: MISS!这怎么可能,我不确定,这正是我在这篇文章中的问题。

以下是一些可能会或可能不会产生影响的更多细节:

  1. URL 通常是 SSL 强制执行的 (https),​​但 HTTP 和 HTTPS 都经过测试以收到相同的结果
  2. 结果是一致的
  3. 清漆运行网站说“是的!有点”

Gor*_*son 6

当您使用该-I选项时,curl 会向服务器(在本例中为 Varnish)发送不同的 HTTP 请求。通常,curl 会发送 GET 请求,但是当您指定时-I,它会发送 HEAD(本质上是告诉服务器只发送标头,而不是实际内容)。我对 Varnish 不是特别熟悉,但它似乎通常同时缓存 GET 和 HEAD 请求——但在你的情况下,它可能被配置为做一些不同的事情,或者后端服务器可能会触发不同的......无论如何,我很确定是 GET 与 HEAD 使缓存-i-I.