如何让清漆从缓存中回答,而不去后端

How to ask Varnish to answer from cache, without go to backend

通常我通过 Varnish 代理请求文件,它 returns 来自缓存的响应,或者为此访问后端。
有什么方法可以从缓存中请求文件,或者在不强制 Varnish 访问后端的情况下获取 404?

以下测试用例显示了一种可能的方法:

varnishtest "..."

server s1 {
    rxreq
    txresp -hdr "Cache-Control: s-maxage=60"
} -start

varnish v1 -vcl+backend {
    sub vcl_miss {
        if (!req.http.X-Warm-Cache) {
            return (synth(404));
        }
    }
} -start

client c1 {
    txreq -url "/foo" -hdr "X-Warm-Cache: 1"
    rxresp
    expect resp.status == 200

    txreq -url "/foo"
    rxresp
    expect resp.status == 200

    txreq -url "/bar"
    rxresp
    expect resp.status == 404
} -run