Varnish purges 缓存清除 教程

 Varnish的缓存清除非常复杂。无论是Varnish的清除方式还是清除时候使用的语法规则等,都是比较复杂。为了理解他,我花费了不少时间,现在我很高兴我知道怎么来解释给大家听了。

1、Varnish有两种方式来清除缓存,其中一种方式是通过命中对象的单一变体,所以在他命中一个没有压缩的对象的时候他不能清除一个已经压缩的对象。这个方式也就是强制过期(forced expiry),他是通过设置你想清除的对象的TTL为0去强制它过期。VCL设置如下:

acl purge {
"localhost";
"192.0.2.14";
}

sub vcl_recv {
if (req.request == "PURGE") {
if (!client.ip ~ purge) {
error 405 "Not allowed.";
}
lookup;
}
}

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.";
}
}

2、另外一种方式是使用purge_url,VCL设置如下:

acl purge {
"localhost";
"192.0.2.14";
}

sub vcl_recv {
if (req.request == "PURGE") {
if (!client.ip ~ purge) {
error 405 "Not allowed.";
}
purge("req.url == " req.url);
}

通过以上在VCL文件的设置,我们通过HTTP来执行PURGE。这意味着你现在发送了一个:

PURGE / HTTP/1.0
Host: www.example.com

通过80端口给了Varnish。但是,这种执行PURGE的方式不支持正则。如果你想支持,可以按照这样来设置VCL:

acl purge {
"localhost";
"192.0.2.14";
}

sub vcl_recv {
if (req.request == "PURGE") {
if (!client.ip ~ purge) {
error 405 "Not allowed.";
}
purge("req.url ~ " req.url);
}

3、对于purge的方式,除了像上边第2点那样设置VCL来允许PURGE外,其实我们还可以通过Varnish的管理端口发送灵活的PURGE命令来清除缓存。
3.1 首先让我们来看看管理端口的help(Varnish版本2.1)

[root@varnish4 varnish]# telnet 192.168.1.185 3500
Trying 192.168.1.185...
Connected to 192.168.1.185 (192.168.1.185).
Escape character is '^]'.
200 154
-----------------------------
Varnish HTTP accelerator CLI.
-----------------------------
Type 'help' for command list.
Type 'quit' to close CLI session.

help
200 377
help [command]
ping [timestamp]
auth response
quit
banner
status
start
stop
stats
vcl.load <configname> <filename>
vcl.inline <configname> <quoted_VCLstring>
vcl.use <configname>
vcl.discard <configname>
vcl.list
vcl.show <configname>
param.show [-l] [<param>]
param.set <param> <value>
purge.url <regexp>
purge <field> <operator> <arg> [&& <field> <oper> <arg>]...
purge.list

3.2 help中和purge有关的命令有三个,其中purge.list是查看purge的列表,能执行purge的是purge.url和purge两个命令。
3.2.1 purge.url命令它只支持url的purge,如清除http://blog.izhoufeng.com/test.html。

[root@varnish2 varnish]# telnet 192.168.1.185 3500
Trying 192.168.1.185...
Connected to varnish1 (192.168.1.185).
Escape character is '^]'.
200 154
-----------------------------
Varnish HTTP accelerator CLI.
-----------------------------
Type 'help' for command list.
Type 'quit' to close CLI session.

purge.url test.html
200 0

除用CLI接口外也可以用:

/usr/local/varnish-2.1/bin/varnishadm -T 192.168.1.185:3500 purge.url ^test.html$

3.2.2 purge命令则很灵活,请看列子:
清除http://izhoufeng.com/somedirectory/和目录下的所有页面。

purge req.http.host == izhoufeng.com && req.url ~ ^/somedirectory/.*$
or
purge req.url ~ ^/somedirectory/ && req.http.host == izhoufeng.com

清除所有带“Cache-Control: max-age=3600”的对象。

purge obj.http.Cache-Control ~ max-age=3600
or
purge obj.http.Cache-Control ~ max-age ?= ?3600[^0-9]

4、对于大量清除,需要程序接口来做。
4.1 通过HTTP的PURGE的接口。
<span style="color: rgb(0, 0, 0); font-weight: bold;"><?php</span>
<span style="color: rgb(102, 102, 102); font-style: italic;">//刷新varnish缓存的函数,$ip为varnish服务器IP地址, $host为要刷新的网站域名,$url为要刷新的不含域名的URL地址</span>
<span style="color: rgb(0, 0, 0); font-weight: bold;">function</span> varnish_purge<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$ip</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 0, 136);">$host</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 0, 136);">$url</span><span style="color: rgb(0, 153, 0);">)</span> 

时间: 2024-09-11 03:46:47

Varnish purges 缓存清除 教程的相关文章

腾讯地图APP缓存清除教程分享

给各位腾讯地图软件的使用者们来详细的解析分享一下缓存清除的教程. 教程分享: 1.打开手机腾讯地图,点击右下角[我],再拖到底部点击[设置]     2.点击[清理缓存]     好了,以上的信息就是小编给各位腾讯地图的这一款软件的使用者们带来的详细的缓存清除的教程解析分享的全部内容了,各位看到这里的软件使用者们,小编相信你们现在那是非常的清楚清除的方法了吧,那么各位朋友们就快去按照小编上面带来的教程自己去尝试下清除缓存看下吧.

IE浏览器缓存怎么清理?网页缓存清除教程

删除浏览器的历史记录可以让我们电脑更快的上网及清理一些垃圾数据同时可以自动更新网页最新的数据了,下面我们按下面办法来清理浏览器缓存. 方法一,通过ie浏览器删除 1.在电脑右击[开始]图标.    2.在"开始"属性菜单中点击[控制面板]细节如下所示.    3.在"控制面板"之后我们找到界面中[网络和Internet]效果如下所示.    4.然后我们再找到界面中的[Internet 选项]细节如下所示    5.在弹出的"Internet 属性&quo

Baidu浏览器快速清除浏览器缓存的教程

如图所示我们在百度浏览器的菜单上点击"工具"然后下拉中就会有一个"清除痕迹"了,点击它.     就会打开清除缓存界面了,在此你可以在界面中点击"缓存临时文件",在前面方框内打上勾,之后点击清除痕迹.   当然了还有更多的缓存清除方法,如果要清除可以全部选哦,当然还有最下面一个"每次退出浏览器时自动清除勾选数据"选中之后每次都会自动清除.

浏览器缓存怎样清理?浏览器缓存清除方法

IE浏览器 1.IE6 在电脑桌面右击IE图标,然后在弹出界面点击 internet属性,然后我们再点击"删除cookies"和"删除文件"按确定 等待一会就可以了. 2.IE7.8.9(本文以IE8为例) 打开IE浏览器,然后在工具-nternet属性,-"删除",点击"删除"即可. 世界之窗(Theworld 3) 1.打开浏览器我们在浏览器的"菜单栏" -"工具"-"清除

ms sql server缓存清除与内存释放

Sql Server系 统内存管理在没有配置内存最大值,很多时候我们会发现运行Sql Server的系统内存往往居高不下.这是由于他对于内存使用的策略是有多少闲置的内存就占用多少,直到内存使用虑达到系统峰值时(预留内存根据系统默认 预留使用为准,至少4M),才会清除一些缓存释放少量的内存为新的缓存腾出空间. 这些内存一般都是Sql Server运行时候用作缓存的,例如你运行一个select语句, 执行个存储过程,调用函数: 1.数据缓存:执行个查询语句,Sql Server会将相关的数据页(Sq

新浪微博缓存清除方法介绍

1.打开新浪微之后找到桌在上的[我]打开进入 2.然后在进入界面点击[设置]打开进入到设置界面 3.在设置面板中点击[清除缓存],点击 4.弹出提示,点击[确定]我们只要点击确定即可 5.清除会有一个过程,上面会显示出来,具体要是看缓存文件大小而时间长短也是根据缓存大小来的. 6.提示清除成功,缓存显示"0.0MB" 缓存清除之后下次我们打开同样的东西会再次加载缓存的哦,所以我们需要定期清除缓存了,这个是没有什么问题.

得到APP怎么清除缓存 手机得到APP缓存清理教程

得到APP缓存清理操作教程: 1.打开手机上的得到APP,点击右下角的[我] 2.下拉到底部,点击[设置] 3.点击[清除缓存] 以上就是手机得到APP清除缓存操作方法了,有需要的朋友快点拿出手机按照教程步骤操作一下试试吧,定期清理应用缓存,可以节省更多的手机存储空间.打开软件速度更快哦.

qq音乐缓存怎么清除 qq音乐缓存文件清除教程

1.我们先打开QQ音乐之后点击QQ音乐界面中的"主菜单"按钮选择"设置" 打开进入,如下图所示 2.然后我们在打开的QQ音乐设置中点击下方左边的"缓存设置",点击"打开文件夹"设置 3.我们就可以看到QQ缓存文件夹,你想彻底删除的.那些我们用安全软件清除不了的都再这里可以删除掉 ps 如果你的缓存文件删除之后下次加载同样的歌曲或内容时需要在网络上重新下载耻的哦,所以大家删除时可以把常用的不清除了.

CodeIgniter框架中启用和清除缓存的教程

Codeigniter支持缓存技术,以达到最快的速度.尽管CI已经相当高效了,但是网页中的动态内容.主机的内存CPU和数据库读取速度等因素直接影响了网页的加载速度.依靠网页缓存,你的网页可以达到近乎静态网页的加载速度,因为他们将程序输出的结果保存到硬盘上了. 缓存是怎么工作的? CI支持每个页面单独缓存,而且可以设置缓存更新时间.当一个网页第一次被加载的时候,缓存文件将被保存到application/cache文件夹.下次访问的时候,系统就会直接读取缓存文件,然后返回给用户的浏览器.如果缓存文件