我在我的vcl中有重复的代码,我想创建自定义函数而不嵌入内联C代码。 ¿有可能吗?
非常感谢您的阅读! 最诚挚的问候
答案 0 :(得分:5)
您可以定义像这样的自定义子程序
sub my_subroutine {
...
}
并将其称为:
call my_subroutine;
来自:http://book.varnish-software.com/4.0/chapters/VCL_Basics.html
VCL中的子程序既不接受参数也不接受返回值。每 子程序通过调用return(action)终止,其中action是a 表示所需结果的关键字。子程序可以检查 并操纵HTTP标头字段和每个方面的各个方面 请求。子例程指示如何处理请求。
子程序示例:
sub pipe_if_local {if(client.ip~local){ 返回(管道); }}
要调用子例程,请使用call关键字,后跟 子程序的名称:
调用pipe_if_local;
Varnish有内置的子程序,它们挂在Varnish上 流程。这些内置子程序都命名为vcl_ *。你自己 子程序无法用vcl _。
开始它们的名字