Todos los productos
Search
Centro de documentos

CDN:Logical functions

Última actualización: Sep 17, 2026

EdgeScript (ES) proporciona seis funciones lógicas para construir expresiones condicionales en las reglas de CDN: and, or, not, eq, ne y null. Los tres operadores booleanos (and, or y not) admiten evaluación de cortocircuito. Por lo tanto, el motor deja de evaluar los argumentos en cuanto se determina el resultado.

Resumen de funciones

Función

Firma

Cortocircuito

Valor devuelto

and

and(arg, ...) : Boolean

Se detiene en el primer false

true si todos los argumentos son verdaderos

or

or(arg, ...) : Boolean

Se detiene en el primer true

true si algún argumento es verdadero

not

not(arg) : Boolean

—

Valor booleano invertido

eq

eq(arg1, arg2) : Boolean

—

true si los valores son iguales

ne

ne(arg1, arg2) : Boolean

—

true si los valores son distintos

null

null(v) : Boolean

—

true si v es una cadena vacía, un arreglo vacío o un diccionario vacío

and

Firma: and(arg, ...) : Boolean

Ejecuta el operador lógico AND. Cuando algún argumento se evalúa como false, la evaluación de cortocircuito se detiene y se omiten los argumentos restantes.

Parámetros: uno o más valores de cualquier tipo.

Valor devuelto: true si todos los valores se evalúan como true; false si algún valor se evalúa como false.

Ejemplo: establezca un encabezado de respuesta solo cuando un parámetro de consulta específico esté presente y coincida con un valor determinado.

if and($arg_mode, eq($arg_mode, 'set_header')) {
   add_rsp_header('USER-DEFINED-1','path1')
}
  • Si la solicitud incluye mode=set_header, and() evalúa ambas condiciones y devuelve true. Se establece el encabezado de respuesta USER-DEFINED-1.

  • Si la solicitud no tiene el parámetro mode, $arg_mode se evalúa como false. La evaluación de cortocircuito se detiene, por lo que nunca se llama a eq() y no se establece el encabezado de respuesta.

or

Firma: or(arg, ...) : Boolean

Ejecuta el operador lógico OR. Cuando algún argumento se evalúa como true, la evaluación de cortocircuito se detiene y se omiten los argumentos restantes.

Parámetros: uno o más valores de cualquier tipo.

Valor devuelto: true si algún valor se evalúa como true; false si todos los valores se evalúan como false.

Ejemplo: redirija solicitudes según el valor del encabezado From.

if and($http_from, or(eq($http_from, 'wap'), eq($http_from, 'comos'))) {
    rewrite(concat('http://example.com.cn/zt_d/we2015/', $http_from), 'enhance_redirect')
}
  • Si el encabezado From es wap o comos, la solicitud se redirige (HTTP 302) a http://example.com.cn/zt_d/we2015/[wap|comos].

  • Si el encabezado From es wap, or() devuelve true de inmediato y se omite la comprobación de comos.

not

Firma: not(arg) : Boolean

Ejecuta el operador lógico NOT. Los valores undef y false se evalúan como falsos, mientras que los demás se evalúan como verdaderos.

Parámetro: exactamente un valor de cualquier tipo.

Valor devuelto: true o false.

Ejemplo: bloquee las solicitudes a las que les falten parámetros o cookies obligatorios.

if not($arg_key) {
    exit(403)
}
if not($cookie_user) {
    exit(403, 'not cookie user')
}
if not(0) {
    exit(403)
}
if not(false) {
    exit(403)
}
  • not($arg_key): si la solicitud no tiene el parámetro de consulta key, $arg_key es undef. not(undef) devuelve true y la solicitud finaliza con HTTP 403.

  • not($cookie_user): si la solicitud no tiene la cookie cookie_user, $cookie_user es undef. not(undef) devuelve true y la solicitud finaliza con HTTP 403 y el cuerpo not cookie user.

  • not(0): devuelve false. El bloque no se ejecuta.

  • not(false): false es un valor falso, por lo que not(false) devuelve true. El bloque se ejecuta y finaliza con HTTP 403.

eq

Firma: eq(arg1: any, arg2: same type as arg1) : Boolean

Compara si dos valores son iguales.

Parámetros:

  • arg1: el primer valor. Tipo de dato: cualquiera.

  • arg2: el segundo valor. Tipo de dato: igual que arg1.

Valor devuelto: true si los dos valores son iguales; de lo contrario, false.

Ejemplo: a continuación se combinan eq y ne dentro de una llamada a and(). Consulte la sección de ne para ver la explicación completa.

key1 = 'value1'
key2 = 'value2'
if and($arg_k1, $arg_k2, eq(key1, $arg_k1), ne(key2, $arg_k2)) {
    say('match condition')
}

ne

Firma: ne(arg1: any, arg2: same type as arg1) : Boolean

Compara si dos valores son distintos.

Parámetros:

  • arg1: el primer valor. Tipo de dato: cualquiera.

  • arg2: el segundo valor. Tipo de dato: igual que arg1.

Valor devuelto: true si los dos valores son distintos; de lo contrario, false.

Ejemplo: procese una solicitud solo cuando ambos parámetros de consulta estén presentes y cumplan con condiciones de valor específicas.

key1 = 'value1'
key2 = 'value2'
if and($arg_k1, $arg_k2, eq(key1, $arg_k1), ne(key2, $arg_k2)) {
    say('match condition')
}

Las cuatro condiciones deben ser verdaderas para que se ejecute el bloque:

  1. La solicitud incluye el parámetro k1.

  2. La solicitud incluye el parámetro k2.

  3. El valor de k1 es igual a value1 (comprobado mediante eq).

  4. El valor de k2 es distinto de value2 (comprobado mediante ne).

Si a la solicitud le falta k1 o k2, la evaluación de cortocircuito se detiene en el paso 1 o 2. En ese caso, no se llama ni a eq() ni a ne().

null

Firma: null(v: array | dictionary | string) : Boolean

Comprueba si se especificó un tipo de dato para EdgeScript (ES).

Parámetro: v, que corresponde a un arreglo, un diccionario o una cadena. Si pasa cualquier otro tipo de dato, se devuelve false.

Valor devuelto: booleano.

  • true: si v es una cadena vacía, o bien un arreglo o diccionario sin elementos.

  • false: si v es una cadena no vacía, un arreglo o diccionario con elementos, o cualquier otro tipo de dato.

Ejemplo:

d = []
say(null(d))
set(d, 1, 'v1')
say(null(d))
say(tostring(null('x')))
say(tostring(null('')))

Salida:

true
false
false
true
  • null(d) aplicado al arreglo vacío [] devuelve true.

  • Después de ejecutar set(d, 1, 'v1'), el arreglo ya no está vacío, por lo que null(d) devuelve false.

  • null('x'): al tratarse de una cadena no vacía, devuelve false.

  • null(''): al tratarse de una cadena vacía, devuelve true.