我有这个:
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/