varnish - 测试 Varnish 缓存规则

标签 varnish varnish-vcl varnish-4

我有这个:

if (bereq.http.X-Path ~ "[a-z0-9]+\.(js|css)$") {
            set beresp.http.Cache-Control = "max-age=259200";
    }

我需要编写一个 test.vtl 来证明它是有效的。我正在尝试:
client c1 {
    txreq -url "/content/css/main.min.aer234vcvb.css"
    rxresp
} -run

但它失败了。

最佳答案

问题是您-符合传入HTTP header 的X-Path的条件。
因此,在您的client中,您没有发送它,并且条件不匹配。

请参阅此示例,该示例基于您的配置,但在X-Path中发送。

varnishtest "Test Cache-Control on X-Path"

server s1 {
    rxreq
    txresp
} -start

varnish v1 -vcl+backend { 

  sub vcl_backend_response {
        if (bereq.http.X-Path ~ "[a-z0-9]+\.(js|css)$") {
           set beresp.http.Cache-Control = "max-age=259200";
    }
  }

} -start

client c1 {
    txreq -url "/content/css/main.min.aer234vcvb.css" -hdr "X-Path: /content/css/main.min.aer234vcvb.css"
    rxresp
    expect resp.http.Cache-Control == "max-age=259200"
} -run

您可能要检查bereq.url而不是bereq.http.X-Path吗?

关于varnish - 测试 Varnish 缓存规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49625017/

相关文章:

php - 调试Varnish的hit_for_pass对象

Varnish:使每个 API key 对象单独缓存

正则表达式匹配任何不是子模式的东西

c - 内联 C 和 vcl 缓存

php - 503后端提取失败-Varnish缓存服务器Laravel

Varnish ,是什么原因造成撞球?

apache - 如何使用多个apache虚拟主机设置varnish 4.1.2?

php - 如何从 Varnish 缓存中删除 PHPSESSIONID

varnish-vcl - 取决于后端健康状况的清漆 4 宽限时间

c - Varnish 4 + Pounds - 绕过特定 IP 地址的缓存