【发布时间】:2018-03-20 18:55:29
【问题描述】:
我们正在为图像缓存 404,因为有时我们的应用会在实际图像之前发布,并且希望能够根据状态代码而不是一张一张地清除所有图像或特定图像。
但是我是 Varnish 的新手,我不确定这是否可行,因为我找不到任何关于基于状态代码进行清除的具体文档。
【问题讨论】:
标签: varnish varnish-vcl varnish-4
我们正在为图像缓存 404,因为有时我们的应用会在实际图像之前发布,并且希望能够根据状态代码而不是一张一张地清除所有图像或特定图像。
但是我是 Varnish 的新手,我不确定这是否可行,因为我找不到任何关于基于状态代码进行清除的具体文档。
【问题讨论】:
标签: varnish varnish-vcl varnish-4
您可以清除和映像或禁止它。 清除:它从缓存中删除特定对象,为此您需要知道要清除的特定对象的主机和 URL。 禁止:要禁止您可以使用正则表达式,并且对于您的用例,这些行中的某些内容应该可以工作。 在 vcl_recv 中:
if (req.method == "BAN") {
ban("req.status == "404");
}
【讨论】:
req.status == 404 按照http标准应该是一个整数吗?但是我看到并非所有系统都遵守这一点,例如 AWS S3 它是一个字符串。
purge 方法似乎只是对 vcl 禁令的一种覆盖。 使用 varnishadmn 测试我发现要清除特定状态,只接受代码 obj.status。
varnishadm ban obj.status == 404
验证:
varnishadm ban.list
【讨论】: