caching - Varnish 4,清理 - 我以为我已经弄清楚了一切

标签 caching varnish varnish-vcl

好吧,我会保持简单,PURGE 请求(或者我是这么认为的?)几乎都是按字面处理的:

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 PURGE http://domain.com/.*

并且 Varnish 发送回 200 Purged well...缓存已清除?即使它只是主页而不是整个缓存(发誓它全部使用上面的 .* 方法)并且上面的代码片段是正确的,是否有任何特殊原因 http://domain.com (如实际主页中所示)未被清除?

varnishncsa 显示:

MYIP - - [16/Feb/2015:23:23:10 -0600] "PURGE http://domain.com/ HTTP/1.1" 200 241 "-" "curl/7.29.0"

我知道我一定错过了一些愚蠢的东西,但我无法弄清楚?

最佳答案

official documentation基本上说明了你所做的事情,但请记住 PURGE != BAN,你可以在 BAN 中使用正则表达式,但不能在 PURGE 中使用。使用 PURGE,您可以删除一个特定 url 的所有 Vary 定义的副本。

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

*   << 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

重新加载时,我看到一个 MISS 和后端请求(因为它不在缓存中):

*   << 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

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

关于caching - Varnish 4,清理 - 我以为我已经弄清楚了一切,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28555261/

相关文章:

c++ - 在 C++ 中对矩阵缓存友好的 C++ 操作?

nginx - Vagrant + Puppets 模块

kubernetes - 在kubernetes部署中配置Varnish后端

linux - 我正在 EC2 linux 上从 docker hub 运行 open varnish 镜像,如何启用 varnish 日志记录?

java - Hibernate - maxElementsOnDisk 从 EHCache 到 TreeCache

javascript - 禁用网页的浏览器缓存,不适用于 IE

java - 如何用Java收集AMD CPU Cache Hit Ratio?

ruby-on-rails-3 - Heroku 和 Rails - Varnish HTTP 缓存不起作用

Varnish (?)中断文件下载

varnish - 快速清除Varnish中大量URL的方法