Caching 清漆4,清洗-我想我已经弄明白了

Caching 清漆4,清洗-我想我已经弄明白了,caching,varnish,varnish-vcl,Caching,Varnish,Varnish Vcl,好吧,我会保持简单,清除请求(或者我认为是这样?)几乎都是由以下人员处理的: acl purge { "localhost"; "127.0.0.1"; } 然后 if (req.method == "PURGE") { if (!client.ip ~ purge) { return(synth(405, "This IP is not allowed to send PURGE requests."));

好吧,我会保持简单,清除请求(或者我认为是这样?)几乎都是由以下人员处理的:

acl purge {

    "localhost";

    "127.0.0.1";

}
然后

if (req.method == "PURGE") {
            if (!client.ip ~ purge) {
            return(synth(405, "This IP is not allowed to send PURGE requests."));
            }
            return (purge);
    }
我相当肯定上述两种说法都是“正确的”,但我挂断的是,如果我发送了

curl -X PURGE http://domain.com/

curl-X清除http://domain.com/.*

清漆会把200个清洗过的井送回去。。。缓存被清除了吗?即使它只是主页,而不是整个缓存(发誓它都使用了上述的。*方法),并且上面的代码片段是正确的,是否有任何特殊原因(如在实际主页中)没有被清除

清漆NCSA显示:

MYIP - - [16/Feb/2015:23:23:10 -0600] "PURGE http://domain.com/ HTTP/1.1" 200 241 "-" "curl/7.29.0"
我知道我错过了一些愚蠢的事情,但我想不出来?

基本上是说你做了什么,但请记住!=BAN,可以在BAN中使用正则表达式,但不能在PURGE中使用正则表达式。使用PURGE可以删除一个特定url的所有不同定义的副本

在我对4.0.2的测试中,它按照建议工作,我缓存了主页,我执行了
curl-X清除http://localhost:8080/
我在varnishlog中看到(除其他外):

*>65542
-开始请求65541 rxreq
-时间戳开始:1424188792.108573 0.000000 0.000000
-时间戳请求:1424188792.108573 0.000000 0.000000
-需求开始:160496
-ReqMethod吹扫
-请求URL/
-VCL_acl匹配清除“本地主机”
-回油净化
-调用哈希
-返回查找
-呼叫清除
重新加载时,我看到一个未命中的后端请求(因为它不在缓存中):

*>65548
-开始bereq 65547提取
-时间戳开始:1424188815.112540 0.000000 0.000000
-贝雷克方法
-贝雷奎尔/
-BereqProtocol HTTP/1.1
-VCL_呼叫后端_响应
-TTL VCL 120 21600 0 14241888815
-返回交付
*   > 65547     
-开始请求65546 rxreq
-ReqMethod获取
-请求URL/
-返回哈希
-调用哈希
-返回查找
-调试“XXXX未命中”
-呼叫未命中
-返回提取
-链接bereq 65548获取

顺便说一句,在清除acl中的IP列表中添加“::1”,以防您使用ipv6。它会返回405,但谁知道呢。

看,这就是我做的curl-X PURGE(varnish在80上),它返回200 PURGE作为响应,但我似乎找不到任何被清除的东西。即使它作为一个文本匹配工作,实际的index.php文件(主页)也应该被清除,否?不能编辑评论,但即使我做了curl-X清除一切(curl输出、varnishlog等),似乎都显示了200个响应,但页面没有被清除。另外一个问题,当涉及到实际的清除查找/响应时,varnish是“哑”的,所以如果我对它进行清除,通常仍然会显示200,对吗?它不像在返回清除回复之前先检查缓存是否存在,对吗?是的,这是正确的,如果允许清除,您将得到一个200。您必须小心传递正确的主机名(-H“Host:domain.com”)和相同的路径(“/”!=“/index.php”),以便它可以清除正确的对象。检查结果是,稍后对该对象的GET请求会导致未命中。您已经解决了这个问题吗?
*   << Request  >> 65542     
-   Begin          req 65541 rxreq
-   Timestamp      Start: 1424188792.108573 0.000000 0.000000
-   Timestamp      Req: 1424188792.108573 0.000000 0.000000
-   ReqStart       ::1 60496
-   ReqMethod      PURGE
-   ReqURL         /

-   VCL_acl        MATCH purge "localhost"
-   VCL_return     purge
-   VCL_call       HASH
-   VCL_return     lookup
-   VCL_call       PURGE
*   << BeReq    >> 65548     
-   Begin          bereq 65547 fetch
-   Timestamp      Start: 1424188815.112540 0.000000 0.000000
-   BereqMethod    GET
-   BereqURL       /
-   BereqProtocol  HTTP/1.1

-   VCL_call       BACKEND_RESPONSE
-   TTL            VCL 120 21600 0 1424188815
-   VCL_return     deliver

*   << Request  >> 65547     
-   Begin          req 65546 rxreq

-   ReqMethod      GET
-   ReqURL         /

-   VCL_return     hash
-   VCL_call       HASH
-   VCL_return     lookup
-   Debug          "XXXX MISS"
-   VCL_call       MISS
-   VCL_return     fetch
-   Link           bereq 65548 fetch