All Products
Search
Document Center

CDN:Fungsi logika

Last Updated:Apr 02, 2026

EdgeScript (ES) menyediakan enam fungsi logika untuk membangun ekspresi kondisional dalam aturan CDN: and, or, not, eq, ne, dan null. Tiga operator Boolean (and, or, not) mendukung evaluasi short-circuit, sehingga mesin berhenti mengevaluasi argumen begitu hasilnya telah ditentukan.

Rangkuman fungsi

FungsiSignatureShort-circuitNilai Kembali
andand(arg, ...) : BooleanBerhenti pada falsetrue jika semua argumen bernilai true
oror(arg, ...) : BooleanBerhenti pada truetrue jika ada argumen yang bernilai true
notnot(arg) : BooleanBoolean terbalik
eqeq(arg1, arg2) : Booleantrue jika sama
nene(arg1, arg2) : Booleantrue jika tidak sama
nullnull(v) : Booleantrue jika v adalah string kosong, array kosong, atau dictionary kosong

and

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

Menjalankan operator logika AND. Jika salah satu argumen dievaluasi sebagai false, evaluasi short-circuit berhenti dan argumen sisanya dilewati.

Parameter: Satu atau lebih nilai dengan tipe apa pun.

Nilai kembalian: true jika semua nilai dievaluasi sebagai true; false jika ada nilai yang dievaluasi sebagai false.

Contoh: Tetapkan header respons hanya ketika parameter kueri tertentu tersedia dan sesuai dengan nilai yang ditentukan.

if and($arg_mode, eq($arg_mode, 'set_header')) {
   add_rsp_header('USER-DEFINED-1','path1')
}
  • Jika permintaan mencakup mode=set_header, and() mengevaluasi kedua kondisi dan mengembalikan true. Header respons USER-DEFINED-1 ditetapkan.

  • Jika permintaan tidak memiliki parameter mode, $arg_mode dievaluasi sebagai false. Evaluasi short-circuit berhenti — eq() tidak pernah dipanggil — dan header respons tidak ditetapkan.

or

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

Menjalankan operator logika OR. Jika salah satu argumen dievaluasi sebagai true, evaluasi short-circuit berhenti dan argumen sisanya dilewati.

Parameter: Satu atau lebih nilai dengan tipe apa pun.

Nilai kembalian: true jika ada nilai yang dievaluasi sebagai true; false jika semua nilai dievaluasi sebagai false.

Contoh: Arahkan ulang permintaan berdasarkan nilai header 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')
}
  • Jika header From bernilai wap atau comos, permintaan diarahkan ulang (HTTP 302) ke http://example.com.cn/zt_d/we2015/[wap|comos].

  • Jika header From bernilai wap, or() langsung mengembalikan true — pemeriksaan terhadap comos dilewati.

not

Signature: not(arg) : Boolean

Menjalankan operator logika NOT. Nilai undef dan false dievaluasi sebagai false, sedangkan nilai lain dievaluasi sebagai true.

Parameter: Tepat satu nilai dengan tipe apa pun.

Nilai kembalian: true atau false.

Contoh: Blokir permintaan yang tidak memiliki parameter atau cookie yang diperlukan.

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) — jika permintaan tidak memiliki parameter kueri key, $arg_key bernilai undef. not(undef) mengembalikan true, dan permintaan diakhiri dengan HTTP 403.

  • not($cookie_user) — jika permintaan tidak memiliki cookie cookie_user, $cookie_user bernilai undef. not(undef) mengembalikan true, dan permintaan diakhiri dengan HTTP 403 beserta isi respons not cookie user.

  • not(0) — mengembalikan false. Blok tersebut tidak dijalankan.

  • not(false)false bernilai falsy, sehingga not(false) mengembalikan true. Blok tersebut dijalankan dan diakhiri dengan HTTP 403.

eq

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

Membandingkan apakah dua nilai sama.

Parameter:

  • arg1: Nilai pertama. Tipe data: apa pun.

  • arg2: Nilai kedua. Tipe data: sama dengan arg1.

Nilai kembalian: true jika kedua nilai sama; false jika tidak.

Contoh: Contoh berikut menggabungkan eq dan ne di dalam pemanggilan and(). Lihat bagian ne untuk penjelasan lengkapnya.

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

ne

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

Membandingkan apakah dua nilai tidak sama.

Parameter:

  • arg1: Nilai pertama. Tipe data: apa pun.

  • arg2: Nilai kedua. Tipe data: sama dengan arg1.

Nilai kembalian: true jika kedua nilai tidak sama; false jika tidak.

Contoh: Sesuaikan permintaan hanya ketika kedua parameter kueri tersedia dan memenuhi kondisi nilai tertentu.

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

Keempat kondisi harus bernilai true agar blok tersebut dijalankan:

  1. Permintaan mencakup parameter k1.

  2. Permintaan mencakup parameter k2.

  3. Nilai k1 sama dengan value1 (diperiksa oleh eq).

  4. Nilai k2 tidak sama dengan value2 (diperiksa oleh ne).

Jika permintaan tidak memiliki k1 atau k2, evaluasi short-circuit berhenti pada langkah 1 atau 2, dan baik eq() maupun ne() tidak dipanggil.

null

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

Memeriksa apakah suatu tipe data ditentukan untuk EdgeScript (ES).

Parameter: v — array, dictionary, atau string. Melewatkan tipe data lain akan mengembalikan false.

Nilai kembalian: Boolean.

  • true — jika v adalah string kosong, atau array/dictionary tanpa elemen.

  • false — jika v adalah string tidak kosong, array/dictionary tidak kosong, atau tipe data lainnya.

Contoh:

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

Output:

true
false
false
true
  • null(d) pada array kosong [] mengembalikan true.

  • Setelah set(d, 1, 'v1'), array menjadi tidak kosong, sehingga null(d) mengembalikan false.

  • null('x') — string tidak kosong — mengembalikan false.

  • null('') — string kosong — mengembalikan true.