【问题标题】:Varnish clear cached items based on status code根据状态码清漆清除缓存的项目
【发布时间】:2018-03-20 18:55:29
【问题描述】:

我们正在为图像缓存 404,因为有时我们的应用会在实际图像之前发布,并且希望能够根据状态代码而不是一张一张地清除所有图像或特定图像。

但是我是 Varnish 的新手,我不确定这是否可行,因为我找不到任何关于基于状态代码进行清除的具体文档。

【问题讨论】:

    标签: varnish varnish-vcl varnish-4


    【解决方案1】:

    您可以清除和映像或禁止它。 清除:它从缓存中删除特定对象,为此您需要知道要清除的特定对象的主机和 URL。 禁止:要禁止您可以使用正则表达式,并且对于您的用例,这些行中的某些内容应该可以工作。 在 vcl_recv 中:

    if (req.method == "BAN") {
        ban("req.status == "404");
    }
    

    【讨论】:

    • 感谢您的发帖,但是在 varnishadmn req.status 中尝试这样做不是有效的可禁止对象
    • 我注意到您实际上是为 varnish 工作的,所以也许您可以找出是否有一种方法可以在不重新启动 varnish 服务的情况下删除禁止列表条目或刷新整个列表?
    • 不应该是req.status == 404 按照http标准应该是一个整数吗?但是我看到并非所有系统都遵守这一点,例如 AWS S3 它是一个字符串。
    【解决方案2】:

    purge 方法似乎只是对 vcl 禁令的一种覆盖。 使用 varnishadmn 测试我发现要清除特定状态,只接受代码 obj.status。

    varnishadm ban obj.status == 404
    

    验证:

    varnishadm ban.list
    

    【讨论】:

      猜你喜欢
      • 2017-10-20
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 1970-01-01
      • 2012-08-07
      • 2012-04-20
      • 2016-12-17
      相关资源
      最近更新 更多