Varnish 缓存与 NGINX 文件无法更新 WordPress

Varnish 缓存与 NGINX 文件无法更新 WordPress

看来 Varnish 缺少或没有正确验证缓存。当我尝试清除缓存时,我收到 200 OK 缓存已成功清除,但我的页面没有更新。我只是对我的 footer.php 进行 HTML 更改(使用 WordPress),但它们没有出现。我检查了我的标题,它们如下:

HTTP/1.1 200 OK
Server: nginx/1.6.0
Content-Type: text/html
Last-Modified: Wed, 23 Apr 2014 18:47:17 GMT
ETag: "53580ab5-2"
Content-Length: 2
Accept-Ranges: bytes
Date: Fri, 10 Oct 2014 15:53:28 GMT
X-Varnish: 21166333
Age: 0
Via: 1.1 varnish
Connection: keep-alive

X-Varnish 标头中缺少“填充缓存的请求的 ID”。

因此我检查了标题,直接从托管我网站的 VPS 运行命令,它似乎运行正常:

HTTP/1.1 200 OK
Server: nginx/1.6.0
Content-Type: text/html; charset=UTF-8
Vary: Accept-Encoding
X-Powered-By: PHP/5.4.33
X-Pingback: http://example.com/xmlrpc.php
Date: Fri, 10 Oct 2014 15:52:56 GMT
X-Varnish: 21166331 21166330
Age: 21
Via: 1.1 varnish
Connection: keep-alive

这是我的 VCL 文件:

backend default {
  .host = "127.0.0.1";
  .port = "8080";
}

acl purge {
        "localhost";
        "127.0.0.1";
        "173.10.93.222";
}
sub vcl_recv {

if (req.request == "BAN") {
    error 200 "Cached Cleared Successfully.";
}

        if (req.request == "PURGE") {
                if (!client.ip ~ purge) {
                        error 405 "Not allowed.";
                }
                return(lookup);
        }
if (req.url ~ "^/$") {
               unset req.http.cookie;
            }
}
sub vcl_hit {
        if (req.request == "PURGE") {
                set obj.ttl = 0s;
                error 200 "Purged.";
        }
}
sub vcl_miss {
        if (req.request == "PURGE") {
                error 404 "Not in cache.";
        }
if (!(req.url ~ "wp-(login|admin)")) {
                        unset req.http.cookie;
                }
    if (req.url ~ "^/[^?]+.(jpeg|jpg|png|gif|ico|js|css|txt|gz|zip|lzma|bz2|tgz|tbz|html|htm)(\?.|)$") {
       unset req.http.cookie;
       set req.url = regsub(req.url, "\?.$", "");
    }
    if (req.url ~ "^/$") {
       unset req.http.cookie;
    }
}
sub vcl_fetch {
        if (req.url ~ "^/$") {
                unset beresp.http.set-cookie;
        }
        if (!(req.url ~ "wp-(login|admin)")) {
                unset beresp.http.set-cookie;
        }
}

当我检查网站 www.isvarnishworking.com 时,我得到了以下信息:

是的!有点!Varnish 似乎正在响应该 URL,但“Age”标头小于 1。

非常感谢您的帮助,我觉得这很简单。我应该注意,这是在 NGINX 服务器上运行的。

我的 style.css 似乎更新得很好,只是页面的 DOM 没有更新。

答案1

没关系,看起来 Varnish 在初始页面加载后就可以正常工作了,但我更新的文件无法显示的原因是由于 APC。

相关内容