Varnish清除缓存

1️⃣ 全量清空缓存

直接把 Varnish 内存里的缓存全部清掉:

varnishadm "ban req.url ~ ."

这条命令会给所有 URL 打一个 ban 标记,后续请求时缓存都会失效。
相当于「全站清缓存」。

如果你想立即清空所有缓存(而不是等对象逐步过期),还可以执行:

varnishadm "ban req.url ~ ."
varnishadm "ban.list"

确保 ban 已经生效。


2️⃣ 按 URL 清理(精准清理)

比如只清 /about/ 页面:

varnishadm "ban req.url == /about/"

或者所有包含 /product/ 的页面:

varnishadm "ban req.url ~ /product/"

3️⃣ 使用 PURGE 方法(需要 VCL 支持)

你的 VCL 里已经写了:

if (req.method == "PURGE") {
    if (!client.ip ~ purge) { return (synth(405, "Not allowed")); }
    return (purge);
}

这说明你可以用 HTTP PURGE 请求来清缓存。

例如清掉首页缓存:

curl -X PURGE http://127.0.0.1/ \
     -H "Host: www.dian.com"

清掉某个具体 URL:

curl -X PURGE http://127.0.0.1/about/ \
     -H "Host: www.dian.com"

⚠️ 注意:client.ip ~ purge 限制了只有 127.0.0.1 能发 PURGE 请求。
如果要让远程机器也能清缓存,就需要在 VCL 的 acl purge 里加上对应 IP。


4️⃣ 重启 Varnish(最暴力)

systemctl restart varnish

直接清空全部缓存(因为默认用 malloc 存在内存里,重启后数据就没了)。

Scroll to Top