【问题标题】:Varnish first request has max-age=0Varnish 第一个请求的 max-age=0
【发布时间】:2016-02-17 00:38:14
【问题描述】:

我让 Varnish 几乎可以使用 Wordpress 和 Total Cache。

但是 isvarnishworking.com 告诉我年龄为 0。有趣的是,如果我再次尝试相同的 URL,一切正常,我可以看到年龄不再是 0

我尝试的每个 URL 都会这样做。我也可以在浏览器中验证这一点。

什么可以解释第一次请求(以及所有客户端)时,max-age 为 0,但从第二次请求开始就可以了?

我可以理解,如果缓存被清空并且它只是在第一次请求时才这样做。但这里是针对每个客户的第一个请求。

vcl_recv:

# Drop any cookies sent to Wordpress.
 if (!(req.url ~ "wp-(login|admin)")) {
unset req.http.cookie;
 }

# Anything else left?
if (!req.http.cookie) {
 unset req.http.cookie;
}

vcl_fetch:

 # Drop any cookies Wordpress tries to send back to the client.
   if (!(req.url ~ "wp-(login|admin)")) {
    unset beresp.http.set-cookie;
    }

【问题讨论】:

    标签: wordpress varnish


    【解决方案1】:

    清漆头“Age”与缓存控制参数“max-age”不同。这只是告诉您该对象刚刚进入缓存。 5 秒后,您应该会看到“年龄:5”。

    具体来自sec 14.6 of RFC 2616

    Age 响应标头字段传达了发件人对 自响应(或其重新验证)以来的时间量 在源服务器生成。缓存的响应是“新鲜的”,如果 它的年龄不超过其新鲜寿命。

    【讨论】:

    • 是的,我明白这一点。因此,您确认在第一次请求时该值为 0 是正常的。然后,如果我等待 10 秒并再次请求资源,则年龄应该为 10,无论谁提出请求?因为这里不是这样。在给定客户端的第一次请求时,它始终为 0,如果另一个客户端之前请求了资源,则事件。在我看来,这不是预期的行为,因此 isvarnishworking.com 上的结果
    • 我明白你的意思。你修改过vcl_hash吗?听起来好像原始客户端 IP、User-Agent 或其他特定于请求的值被用作哈希的一部分。
    • 我在default.vcl 中所做的唯一一件事就是在vcl_fetch 和vcl_recv 中添加了一些代码。请参阅我的帖子中的编辑。我没有改变 vcl_hash。
    • 非常有趣......也许是来自起源的“Vary:User-Agent”?您所展示的一切似乎都不应该导致这种情况......
    【解决方案2】:

    很好,Varnish 对这个问题的回答是,如果我需要帮助,我应该订阅 Varnish Plus。

    我想我会用别的东西。

    【讨论】:

    • 没有来自原点的“Vary”标头?
    猜你喜欢
    • 2023-03-12
    • 2014-05-02
    • 2018-05-08
    • 2021-04-15
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 2022-08-24
    相关资源
    最近更新 更多