Varnish Cache初学笔记

等了N久还不见新的版本出来,于是忍不住先学习一下,主要是看man page。基本明白,但英语还是太差,理解能力也有限,有些细微之处不很明白,比如pass和pipe的区别等等。

安装过程就不说了,无非就是configure/make/make install,配置样例也都有,在昨天配置varnish的时候发现,man里提供的配置样例中有一段是这样的

if (req.http.Authenticate || req.http.Cookie) {
pass;
}

但是实际上这段配置在测试过程中造成了一些麻烦,情况很奇怪,怀疑是varnish的bug。网站图片显示不正常,文字貌似没问题,抓包看,竟然发现在客户端请求图片的时候,varnish把上一次回送的HTML文本内容又送了一遍。

由于不太清楚pass和pipe的区别,出于尝试目的于是我把配置改为:

if (req.http.Authenticate ){
pass;
}
if(req.http.Cookie) {
pipe;
}

也就正常了。

于是再次尝试一下,暂时把自己BLOG的域名指到一台跑varnish的烂PC上,测试一下看看,获取些实际运行经验。打算跑个几天再改回来。

昨天下班后修改DSN,本地大约过了5个小时,生效,访问 通过varnish缓存。

早上来看了下,varnish总共处理1395个请求,缓存命中是1132,看样子对于ZBLOG这样静态内容为主的站点,缓存命中还是比较高的。

自己的网站访问量并不大,其实最好能找个访问量比较大的站点进行一下实际测试,呵呵。

man page意译如下:

VCL语法比较简单,和C类似,if(){}的形式,=和==的区别,!、&&和||等等。但\符号没有特别的意思。
VCL里除了用==、!、&&、||做逻辑判断意外,还可以用~来表示与正则表达式或ACL的匹配。
VCL其实只是配置,并不是真正的编程语言,没有循环,没有自定义变量。

声明Backend


backend 名称 {
set backend.host = "域名";
set backend.port = "端口";
}


比如


backend www {
set backend.host = "www.example.com";
set backend.port = "http";
}


声明的Backend可以用在判断请求针对哪个后端服务器


if (req.http.host ~ "^()?example.com$") {
{
set req.backend = www;
}


声明ACL
acl 名称 {
"IP";
"IP子网"/反掩码位数;
! "IP或IP子网"/反掩码位数;
}
比如


acl local {
"locahost"; /* myself */
"10.0.0.1"/8; /* and everyone on the local network */
! "10.0.0.23"; /* except for the dialin router */
}


 

更多详情见请继续阅读下一页的精彩内容

Varnish 的详细介绍请点这里
Varnish 的下载地址请点这里

相关阅读

Varnish Cache 的架构笔记

CentOS 5.8下Varnish-2.1.5的安装配置

RedHat脚本改用CentOS源更新安装Nginx、PHP 5.3、Varnish

利用Varnish构建Cache服务器笔记

缓存服务Varnish安装配置

Varnish 编译安装所需准备

Linux下Varnish缓存的配置优化

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/f01ffefe7e6b85c7bfae761c8aec712a.html