gpt4 book ai didi

varnish - Varnish的 `vcl_hash`的实现

转载 作者:行者123 更新时间:2023-12-03 17:46:32 26 4
gpt4 key购买 nike

据我了解, Varnish 的vcl配置文件只是C文件。我的新认识是, Varnish 的VCL文件是一种特定于领域的语言,与C有着许多相似之处。但是,我对现代C不熟悉,对我的穴居人大学C却很生疏,而且我不了解 Varnish 的C vcl_hash函数起作用。

具体来说,典型的vcl_hash函数将如下所示。

sub vcl_hash {
hash_data(req.url);
if (req.http.host) {
hash_data(req.http.host);
} else {
hash_data(server.ip);
}
return (hash);
}
hash_data函数调用看起来很简单-我假设它在某种数据结构中添加了要考虑的缓存键所需的信息。

让我困惑的是最后的电话
return (hash);
vcl_hash返回什么?什么是 (hash)?是功能吗?如果是这样,C如何在不带括号的情况下调用它( hash())?或者varnish在幕后做些聪明的事情?

最佳答案

VCL 中的 return 语句实际上是指“操作”。它有效地强制 Varnish 进入请求处理的下一阶段。从 return (hash) 本身返回 vcl_hash 实际上看起来很奇怪,因为通常你会从 vcl_recv 这样做来告诉它进入对象查找阶段。

通常 vcl_hash 是 return (lookup) 或什么都没有(用“内置”vcl_hash 来完成,它应用主机名和 url)。 “查找”将短路可能存在的任何其他 vcl_hash 实现并直接进入查找阶段。

关于varnish - Varnish的 `vcl_hash`的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32108111/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com