【发布时间】:2016-04-29 15:54:51
【问题描述】:
我的 vcl 中有重复代码,我想创建自定义函数而不嵌入内联 C 代码。有可能吗?
【问题讨论】:
标签: varnish varnish-vcl
我的 vcl 中有重复代码,我想创建自定义函数而不嵌入内联 C 代码。有可能吗?
【问题讨论】:
标签: varnish varnish-vcl
您可以像这样定义自定义子例程
sub my_subroutine {
...
}
然后这样称呼它:
call my_subroutine;
发件人:http://book.varnish-software.com/4.0/chapters/VCL_Basics.html
VCL 中的子程序既不接受参数也不接受返回值。每个 子程序通过调用 return (action) 终止,其中 action 是 表示期望结果的关键字。子程序可以检查 并操纵 HTTP 标头字段和每个字段的其他各个方面 要求。子例程指示如何处理请求。
子程序示例:
sub pipe_if_local { if (client.ip ~ local) { 返回(管道); } }
要调用子例程,请使用 call 关键字,后跟 子程序名称:
调用 pipe_if_local;
Varnish 有内置的子例程,这些子程序与 Varnish 挂钩 工作流程。这些内置子程序都被命名为 vcl_*。你自己 子程序的名称不能以 vcl_ 开头。
【讨论】: