首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >清漆vcl_backend_response检测vcl_recv返回(哈希)

清漆vcl_backend_response检测vcl_recv返回(哈希)
EN

Stack Overflow用户
提问于 2017-09-03 20:35:26
回答 2查看 892关注 0票数 0

在多个网站设置使用清漆5.1端口80,我不想缓存所有的域。这在vcl_recv中很容易做到。

代码语言:javascript
复制
if ( req.http.Host == "cache.this.domain.com" ) {
    return(hash);
}

return(pass);

现在,在vcl_backend_response中,我想对缓存的域进行一些处理。

当然,我可以执行if( bereq.http.Host == "cache.this.domain.com“),但是有什么方法可以知道它是来自vcl_backend_response内部的返回(散列)还是返回(Pass)调用?

我认为这是有意义的,但却找不到信息。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-04 09:46:13

我真想知道为什么你一开始就需要这样的处理。

我认为没有办法直接告诉你是如何进入vcl_backend_response的。因此,我想您可以设置一个标志,然后再检查它,即:

代码语言:javascript
复制
sub vcl_recv {
    if ( req.http.Host == "cache.this.domain.com" ) {
        set req.http.return_type = "hash";
        return(hash);
    }
    set req.http.return_type = "pass";
    return(pass);
}

sub vcl_backend_response {
    if( bereq.http.return_type == "pass" ) ...
}
票数 0
EN

Stack Overflow用户

发布于 2017-09-04 16:08:11

除了@Daniel V.建议的临时方法之外,另一种可能适合您需要的方法是:

代码语言:javascript
复制
sub vcl_backend_response {
    if (!bereq.uncacheable) {
        ...
    }
}

这让我们只对可缓存的对象执行额外的处理。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46027613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档