分类存档: 缓存

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'] = …

继续阅读 »

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