短路 Varnish 方法而不跳过内置方法

短路 Varnish 方法而不跳过内置方法

在配置 Varnish 4 时,我对内部短路很感兴趣vcl_recv,但我不想跳过Builtin.vcl (née default.vcl) VCL 逻辑。例如,给定以下 VCL 伪代码:

sub vcl_recv {
    if (somecondition1) {
        set some_thing;
        return (hash); # Return from cache if present, or fetch from the backend
    }

    if (somecondition2) {
        set some_other_thing;
        return (hash); # Return from cache if present, or fetch from the backend
    }

    // ...

    return (pass); # Skip cache, fetch from the backend
}

问题 1

如果我调用return所有可能的代码路径,那么内置逻辑将被跳过, 正确的?

问题2

有没有办法格式化与上述类似的代码,但不跳过builtin.vcl逻辑?我能看到的唯一方法是组合我的条件,对!它们进行布尔运算,然后将其移动到return (pass);巨大的内部if

答案1

1)是的

2) 返回的全部意义在于您跳过部分代码,停止运行不需要的代码(散列、传递、丢失)。如果您需要运行它,请
a) 复制您需要在返回之前执行的代码,或者
b) 使用大量包装器。

就我个人而言,我倾向于复制和替换所有内置 vcl,除了最基本的网站之外,我可以通过这种方式获得非常高的命中率 (98%+)。

相关内容