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 存在内存里,重启后数据就没了)。