在数据库记录级别使用varnish cache

时间:2017-07-23 23:31:01

标签: varnish

我正在使用遗留代码库来构建一个Web应用程序,其架构称为“基于小部件”。它基本上是缓存的数据库结果集,将在应用程序的不同部分的几个“小部件”上呈现。因此,当他们更新或创建新记录时,他们会使用一组规则来了解哪些缓存无效,以便显示所述记录。

通过阅读清漆用例示例,看起来它不是为缓存数据库记录(如memcache或apc)而构建的,而是 webserver的响应本身(AKA,整个html页面)。 / p>

如果我的上一个陈述是正确的,我怎样才能使显示新记录的html页面的varnish cache的缓存注册表无效(基本上,挑选什么无效)?

1 个答案:

答案 0 :(得分:1)

您可以清除缓存的内容。文档的这一部分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);
        }
}

重新启动服务器后,您可以使用PURGE方法清除页面。

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

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

curl -X PURGE http://yourhost.com/widget/a