varnish 缓存php,PHP 清空varnish 缓存的详解(包括指定站点下的)

该博客介绍了如何使用PHP函数来清空Varnish缓存,特别是针对特定URL的清除方法。`clearVarnish()`函数用于清除指定链接的缓存,而`varnish_purge()`函数允许按主机名或URL匹配模式进行更精确的缓存清理。文章强调了传入URL不带参数以及使用正则表达式匹配的重要性,确保正确地清除目标内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

没法清空文件夹内容 只能清空指定链接缓存

function clearVarnish($ip,$url,$host=null){

$errstr = '';

$errno = '';

$varnist_arr = isset($host) ? $host : C('VARNISH_LIST');

foreach ($varnist_arr as $v){

$fp = fsockopen ($ip, 2000, $errno, $errstr, 2);

if (!$fp) {

return false;

} else {

$out = "purge.url $url \r\n";

fputs ($fp, $out);

$out = fgets($fp , 4096);

fclose ($fp);

return $out;

}

}

}

?>

需要注意的是:传入进来的 url是不能带参数的  如:www.baidu.com/?tn=sougou

因为 purge.url 后清空的是 正则表达式 可以改成 www.baidu.com/(.?)sougou 这样就可以了。

当一台varnish 缓存多个站点内容需要清除指定站点URL 或者单纯清除 站点首页时 需使用purge 而不是purge.url

function varnish_purge($ip, $host='', $url) {

$errstr = '';

$errno = '';

$fp = fsockopen ($ip, 2000, $errno, $errstr, 2);

if (!$fp) {

return $errno;

}else {

if(!empty($host)){

$out = "purge req.http.host == {$host} && req.url ~ ^/$ \r\n";

}else{

$out = " purge.url {$url} \r\n";

}

fputs ($fp, $out);

$out = fgets($fp , 4096);

fclose ($fp);

return $out;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值