http方式更新varnish的缓存
varnish是非常好用的‘CDN’缓存软件,可以用作图片服务器的扩展使用。
但是图片如果是经常需要更新的,就需要引进更新机制。
Varnish的配置文件里带有定时更新方法。
但是在我的使用过程中,总是发现这个更新方法不是很灵。我使用的是varnish1.1.2。
一时也没有找出什么原因。
就想了通过http方式,进行更新。通过测试,已经成功。
写一个php文件:
<?php
function varnish_purge($ip, $host, $url)
{
$errstr = ”;
$errno = ”;
$fp = fsockopen ($ip, 80, $errno, $errstr, 10);
if (!$fp)
{
return false;
}
else
{
$out = “PURGE {$url} HTTP/1.1\r\n”;
$out .= “Host:{$host}\r\n”;
$out .= “Connection: close\r\n\r\n”;
fputs ($fp, $out);
$out = fgets($fp , 4096);
fclose ($fp);
return true;
}
}
$url=$_GET['u'];
varnish_purge(“192.168.1.167″, “mp.×××××.com”, $url);
varnish_purge(“192.168.1.183″, “mp.×××××.com”, $url);
?>
这样就可以用过http方式更新varnish的缓存,不过发现这种方式处理的速度比较慢。
下面就准备解决这个问题。