【发布时间】:2015-11-28 02:08:09
【问题描述】:
Varnish(快速运行)缓存对象的时间超过了我(我认为我)指定的时间。为了调试这个问题,我以以下方式在各处添加标题:
sub vcl_miss {
set req.http.Debugmiss = "vcl_miss";
#FASTLY miss
return(fetch);
}
sub vcl_deliver {
#FASTLY deliver
set resp.http.Debugmiss = req.http.Debugmiss;
return(deliver);
}
我已经为vcl_recv、vcl_hit、vcl_miss、vcl_pass、vcl_hash 和 vcl_fetch 做过这个;但是,似乎根据标头调用的唯一函数是vcl_recv(进行查找)和vcl_deliver。例如,根据vcl_recv返回lookup代码后的状态图(https://www.varnish-software.com/book/3/_images/vcl.png),应该调用vcr_hash函数。如果是,它似乎没有设置任何标题。
有什么我忽略的吗?
这些是 curl 返回的响应头:
< HTTP/1.1 200 OK
< Server: Cowboy
< X-Frame-Options: SAMEORIGIN
< X-Xss-Protection: 1; mode=block
< X-Content-Type-Options: nosniff
< Access-Control-Allow-Origin: *
< Content-Type: application/json; charset=utf-8
< Etag: W/"9fbfd39142780bd83fed663b051c83d9"
< X-Request-Id: a2a9b83a-4143-4b40-b788-94969dd5ce91
< X-Runtime: 0.020195
< X-Rack-Cache: miss
< Via: 1.1 vegur
< Content-Length: 434
< Accept-Ranges: bytes
< Date: Wed, 02 Sep 2015 13:41:41 GMT
< Via: 1.1 varnish
< Age: 4
< Connection: keep-alive
< X-Served-By: cache-lhr6332-LHR
< X-Cache: HIT
< X-Cache-Hits: 1
< X-Timer: S1441201301.048931,VS0,VE2
< Cache-Control: no-cache, no-store, private, must-revalidate, max-age=0, max-stale=0, post-check=0, pre-check=0
< Expires: 0
< Pragma: no-cache
< Debugrecv: vcl_recv
< Debugrecvreturn: lookup
< debugme: vcl_deliver; desperate8
完整的vcl可以在这里找到:https://gist.github.com/mdemare/2e0fa52e62691806e0a0
【问题讨论】:
-
可以添加完整的vcl吗?
-
当然,我已经添加了 vcl。
标签: varnish varnish-vcl