清漆缓存不正确

清漆缓存不正确

我正在尝试配置清漆(接下来是:默认_varnish3.vcl_.txt

[alexus@wcmisdlin02 ~]$ rpm -q varnish
varnish-3.0.3-1.el5.centos.x86_64
[alexus@wcmisdlin02 ~]$ 

我通过浏览器进行了第一次点击(页面加载正常),然后通过本地机器上的 curl 再次进行点击:

[alexus@wcmisdlin02 ~]$ curl -I alexustest:6081
HTTP/1.1 200 OK
Server: Apache/2.2.15 (Red Hat)
X-Powered-By: PHP/5.3.3
Cache-Control: public, max-age=1800
Last-Modified: Thu, 11 Apr 2013 19:27:15 +0000
Expires: Sun, 11 Mar 1984 12:00:00 GMT
Vary: Cookie,Accept-Encoding
Content-Type: text/html; charset=utf-8
Date: Thu, 11 Apr 2013 19:27:16 GMT
X-Varnish: 1355259954
Age: 0
Via: 1.1 varnish
Connection: keep-alive
X-Served-By: wcmisdlin02.uftmasterad.org
X-Cache: MISS

它显示了X-Cache: MISS,但实际上它应该是一次命中(因为这是第二次命中),所以我再次执行了此操作(第三次,并且从我的 Linux 工作站再次执行)。

[alexus@wcmisdlin02 ~]$ curl -I alexustest:6081
HTTP/1.1 200 OK
Server: Apache/2.2.15 (Red Hat)
X-Powered-By: PHP/5.3.3
Cache-Control: public, max-age=1800
Last-Modified: Thu, 11 Apr 2013 19:27:15 +0000
Expires: Sun, 11 Mar 1984 12:00:00 GMT
Vary: Cookie,Accept-Encoding
Content-Type: text/html; charset=utf-8
Date: Thu, 11 Apr 2013 19:27:19 GMT
X-Varnish: 1355259955 1355259954
Age: 3
Via: 1.1 varnish
Connection: keep-alive
X-Served-By: wcmisdlin02.uftmasterad.org
X-Cache: HIT
X-Cache-Hits: 1

[alexus@wcmisdlin02 ~]$ 

现在它出现了 HIT,听起来像是每个客户端的缓存之类的。正如我所说,我正在使用默认_varnish3.vcl_.txt,所以你可以看到我的配置是这样的,我只改变了后端信息以匹配我的环境,还添加了以下代码(以产生 HIT/MISS):

[root@wcmisdlin02 varnish]# cat vcl_deliver/resp.vcl 
set resp.http.X-Served-By = server.hostname;
if (obj.hits > 0) {
    set resp.http.X-Cache = "HIT";  
    set resp.http.X-Cache-Hits = obj.hits;
} else {
    set resp.http.X-Cache = "MISS"; 
}
[root@wcmisdlin02 varnish]# 

* 更新 *

varnishncsa 的:

10.52.208.221 - - [11/Apr/2013:15:45:35 -0400] "HEAD http://alexustest:6081/ HTTP/1.1" 200 0 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.13.1.0 zlib/1.2.3 libidn/1.18 libssh2/1.2.2"
10.100.0.35 - - [11/Apr/2013:15:45:38 -0400] "HEAD http://alexustest:6081/ HTTP/1.1" 200 0 "-" "curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5"

答案1

首先通过浏览器访问(页面加载正常),然后我再次通过 curl 访问

但是你告诉 webcache 你将根据 cookies 和内容编码提供不同的结果:

变化:Cookie、Accept-Encoding

在第一次请求之前,您是否删除了浏览器中的所有 cookie?另外,您是如何从浏览器发出请求的 - 重新加载与刷新的行为截然不同。

(顺便说一句,如果您要通过 cookie 来改变您的设置并且您正在使用会话那么您应该使您的缓存具有控制权 - 否则您将使 Varnish 辛苦工作而没有任何好处,事实上您实际上可能会减慢您的网站速度)。

相关内容