标签存档: Varnish

2,017 查看

Varnish中如何更灵活的编写vcl

Varnish本身的VCL语法是很简单的,功能也有限。不过可以完成比较好的固定要求的需求。 比如当我们要设置ttl为一个特定值时候,我们可以这么设置 set beresp.ttl = 3600s 上面表示将ttl设置为3600s。 我们如果现在有一个这样的需求, 我希望每个页面有自己的缓存时间,而不是统一为3600s。这个时候该怎么做呢? 因为可能是跨平台的,所以,最直接想到的,自然是使用http协议头信息进行控制。 这里我是这么做的,首先我们定一个新的协议头,名为Cache-Span。我没有使用原有的Pragma和Cache-Control等,这些原有的头信息,主要是因为,这些事保留给控制浏览器使用的。另外,为了简化在Varnish中使用正则,自定义一个头,是最简单的方法。 在程序部分,我们也可以在一个信息要发送出去之前,加上该头信息。 对于Varnish来说,只需要解析头信息即可。于是又了下面的代码, set beresp.ttl = beresp.http.Cache-Span; 如果你使用这段代码,当重启varnish的时候,会提示String不能转成Duration。 这下郁闷了吧。 不过,不担心,这里我们就要引入,我们这次要着重介绍的库vmod_std,该库,在varnish3.0中默认是一起发布的,所以,在使用时候,只要import std;即可了。 这里,贴一下该库的文档连接,应该还是很简单易用的。 https://www.varnish-cache.org/docs/trunk/reference/vmod_std.html 于是,我们就将代码变成了 set beresp.ttl = std.duration(beresp.http.Cache-Span+"s",3600s); 这里文档上写的是3600,是错的。是需要加s的。 Ok,这样就满足了我们需求。如果有更复杂的需求,都可以采取类似的方案进行处理。 最后,附上,其他一些varnish常用的工具的文档说明的地址。 https://www.varnish-cache.org/docs/trunk/reference/index.html SyntaxHighlighter.defaults['class-name'] = ”; SyntaxHighlighter.defaults['smart-tabs'] = true; SyntaxHighlighter.defaults['tab-size'] = …

继续阅读 »

1,446 查看

配置Varnish的Service启动项

我们经常使用service varnish start之类,非常的方便,但是当你需要定制一些东西的时候,就会涉及到修改相应的配置项目。 其实,这个是相同的,对于别的程序也是如此,甚至也可以自己写。 在这里我们主要用到两个文件。 vim /etc/rc.d/init.d/varnish vim /etc/sysconfig/varnish 第一个文件就是我们service启动的脚本,第二个是service启动时候,会用到的配置文件。 我们现在举一个简单的场景, 比如,我现在需要将我的配置文件加载不使用default,使用my.vcl,同时监听80端口,内存2G,管理后台端口为2000,那么我们应该如何修改呢? 这里因为都是配置项目,其实我们不用修改/etc/rc.d/init.d/varnish这个脚本的内容,但是好好读这个文件,会让我们更容易调整。 接下来我们进入/etc/sysconfig/varnish。 找到我们需要修改的项,分别为: 1、将VARNISH_VCL_CONF=/etc/varnish/default.vcl,把这里的default.vcl改成my.vcl 2、将VARNISH_LISTEN_PORT=6801,把这里的6801改成80 3、将VARNISH_STORAGE_SIZE=1G,把这里的1G改成2G 4、将VARNISH_ADMIN_LISTEN_PORT=6802,把这里的6802改成2000 Ok,自此我们就改完了。这里只是简单的举个例子。 SyntaxHighlighter.defaults['class-name'] = ”; SyntaxHighlighter.defaults['smart-tabs'] = true; SyntaxHighlighter.defaults['tab-size'] = 4; SyntaxHighlighter.defaults['gutter'] = true; SyntaxHighlighter.defaults['quick-code'] = true; SyntaxHighlighter.defaults['collapse'] = false; SyntaxHighlighter.defaults['auto-links'] = …

继续阅读 »

1 查看

Varnish3.0中文入门教程

本教程为官方教程的完整翻译。并做了一定总结、整理。 整个Varnish的学习需要分成两个部分,PART1:部署篇,PART2:应用篇     第一部分:部署篇 作为一个Server Service,部署是最基本的,同时也没有太多需要说明的。按照官方的教程,一运行便可了。但是需要注意的是,–perfix什么的,具体怎么设置的,可要好好的记住,否则,以后要查起来,可就没有头绪了。另外,装了什么样的插件也要清楚的。 下面介绍下,安装方法。 针对CentOS系统,有两种方法安装,一种是通过rpm,另一种是通过源码安装。 一、通过rpm安装: 使用varnish-cache.org库,运行 rpm –nosignature -i http://repo.varnish-cache.org/redhat/varnish-3.0/el5/noarch/varnish-release-3.0-1.noarch.rpm 然后运行, yum install varnish –no-signature只在初始安装时需要,因为Varnish的GPG key还不再yum的keyring中。 二、通过源码编译安装: 1、获得源码文件 从http://repo.varnish-cache.org/source上下载tar包,找release版的。 或者你可以通过git克隆一个。Git clone git://git.varnish-cache.org/varnish-cache 要注意通过git签出的版本会比一般情况需要更多依赖包,尤其是Python Docutils和Sphinx。 2、所需要的依赖包 automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig 3、配置和编译 确保上面的依赖包都满足,这样才能配置。基本命令如下 …

继续阅读 »

无觅相关文章插件,快速提升流量