首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >varnish4 vs varnish3 -优雅的行为

varnish4 vs varnish3 -优雅的行为
EN

Stack Overflow用户
提问于 2017-11-02 18:57:44
回答 1查看 60关注 0票数 1

我目前正在做一个从varnish3到varnish4的迁移项目,我面临着一种我不理解的行为。

简单地说,使用在Varnish3和Varnish4中使用的相同配置文件,我不会得到关于命中和未命中的相同结果。

这似乎与宽限属性有关,但我不知道它是如何工作的。

下面是一个详细描述问题的例子:

我的varnish3配置:

代码语言:javascript
复制
# ----------------------------------------------
backend default {
    .host = "nginx";
    .port = "80";
}

sub vcl_fetch {
     set beresp.grace= 5s;
     set beresp.ttl = 1s;
}

sub vcl_deliver {
    if (obj.hits > 0) {
        set resp.http.X-Cache = "HIT";
    } else {
        set resp.http.X-Cache = "MISS";
    }
    set resp.http.X-Cache-Hits = obj.hits;
}
# ----------------------------------------------

我的varnish4配置:(唯一的变化是方法名vcl_backend_response而不是vcl_fetch )

代码语言:javascript
复制
# ----------------------------------------------
vcl 4.0;

backend default {
    .host = "nginx";
    .port = "80";
}

sub vcl_backend_response {
     set beresp.grace= 5s;
     set beresp.ttl = 1s;
}

sub vcl_deliver {
    if (obj.hits > 0) {
        set resp.http.X-Cache = "HIT";
    } else {
        set resp.http.X-Cache = "MISS";
    }
    set resp.http.X-Cache-Hits = obj.hits;
}
# ----------------------------------------------

一个小场景的结果是在一段时间后检索给定资源的标头:

代码语言:javascript
复制
# ----------------------------------------------
Time 14-47-12
VARNISH4:
X-Cache: MISS
X-Cache-Hits: 0
VARNISH3:
X-Cache: MISS
X-Cache-Hits: 0

Time 14-47-13
VARNISH4:
X-Cache: HIT
X-Cache-Hits: 1
VARNISH3:
X-Cache: MISS
X-Cache-Hits: 0

Time 14-47-20
VARNISH4:
X-Cache: MISS
X-Cache-Hits: 0
VARNISH3:
X-Cache: MISS
X-Cache-Hits: 0
# ----------------------------------------------

因此,正如您在场景中看到的,对于第一个请求,v3和v4都会返回一个未命中,这是正常的。但是一秒钟后,第二个请求返回varnish3未命中,这对我来说很正常,而命中varnish4,我真的不太明白。因为我怀疑这与宽限参数有关,所以我在7秒后的场景中添加了第三个请求(缓存大于1秒,宽限为5秒),正如预期的那样,varnish 3和varnish 4都未命中。

所以如果有人能帮我理解/解决这个问题...我的目标是使用varnish4获得与varnish3相同的结果(当我从3迁移到4时;)。我目前的解决方法是在varnish4上设置beresp.grace=1ms,但我一点也不喜欢这样,而且我不能在我的每个配置上都这样做:(

任何帮助都将不胜感激!

提前感谢!:)

EN

回答 1

Stack Overflow用户

发布于 2017-11-02 20:23:01

Varnish4在第二个请求中提供了一个陈旧的对象(参见How objects are stored)。

我建议你阅读Grace mode,和Understanding Grace using varnishtest一起玩。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47073608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档