代码之家  ›  专栏  ›  技术社区  ›  Christopher Francisco

varnish缓存在数据库记录级别的使用

  •  2
  • Christopher Francisco  · 技术社区  · 8 年前

    我正在使用一个传统的代码库,用于一个web应用程序,其架构被他们称为“基于小部件”。它基本上是缓存的数据库结果集数据,这些数据将显示在应用程序不同部分的几个“小部件”上。因此,当他们更新或创建新记录时,他们使用一组规则来知道哪些缓存要失效,以便显示所述记录。

    Web服务器的响应本身 (也称为整个html页面)。

    如果我的最后一句话是正确的,那么我如何仅使显示新记录的html页面的varnish缓存的缓存注册表无效(基本上,选择要无效的内容)?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Dimas Kotvan    8 年前

    您可以清除缓存的内容。本节将对此进行解释 Purging and Banning

    基本上,您在VCL文件中添加了类似的内容

    acl purge {
            "localhost";
            "192.168.55.0"/24;
    }
    
    sub vcl_recv {
            # allow PURGE from localhost and 192.168.55...
    
            if (req.method == "PURGE") {
                    if (!client.ip ~ purge) {
                            return(synth(405,"Not allowed."));
                    }
                    return (purge);
            }
    }
    

    例如,如果您有以下url: http://yourhost.com/widget/a 您向同一地址发送清除请求以将其从缓存中删除。

    您可以使用命令行实用程序curl来实现这一点,如下所示,但任何允许发送自定义HTTP方法的工具/库都可以使用:

    curl -X PURGE http://yourhost.com/widget/a
    
    推荐文章