# Banning

**Purging** kolaydır: nesnenin **hash** değerini kullanır, yalnızca bir nesneyi tahliye eder ve basit bir kullanımı vardır.&#x20;

Ancak, gerçekleştirecek çok sayıda temizleme işleminiz varsa veya hangi kaynakların bayat olduğundan emin değilseniz, tam URL kullanmak sizin için kısıtlayıcı olabilir. Bir örüntü bazlı geçersiz kılma mekanizması bu sorunu çözer ve **ban** fonksiyonuda bunu yapar.&#x20;

Temel olarak, **ban**, önbellekten kaldırılması gereken nesneleri işaretlemek için **regex** kullanır. Bu işaretli nesneler sözde yasak listesine eklenir. **ban**, öğeleri hemen önbellekten kaldırmaz ve bu nedenle doğrudan hiçbir kaydı serbest bırakmaz.&#x20;

Bir nesneye yasak listesine göre istek yapıldığında liste kontrol edilir. Ayrıca **obj** nesnesinin herhangi bir değişkeniyle eşleşen yasakları kontrol eden bir **ban lurker** isimli arka plan süreci da vardır.

{% hint style="info" %}
**obj** nesnesi yalnızca **header**, yanıt gövdesi (**response body**) ve meta verileri (**metadata**) saklar. İstek (**request**) bilgisi yok. **ban lurker** bu bilgiden hiçbirine sahip değildir; bu nedenle **ban lurker** **thread**, yalnızca, **ban**, **obj** gibi istek bağlamı olmayan nesnelerle eşleşirse öğeleri önbellekten kaldırabilir. Diğer tüm **ban'**&#x6C;ar istek anında kaldırılır ve arka planda yapılmaz.
{% endhint %}

İşte temel bir **ban** örneği. PURGE örneğiyle tam olarak aynı şeyi yapar, ancak URL regex ile belirtilebilir:

```c
acl ban {
  "localhost";
  "192.168.55.0"/24;
}
sub vcl_recv {
  if (req.method == "BAN") {
    if (!client.ip ~ ban) {
        return(synth(403, "Not allowed."));
    }
    ban("req.http.host == " + req.http.host + " && req.url ~ " + req.url);
    return(synth(200, "Ban added"));
  }
}
```

{% hint style="warning" %}
Sık erişilmeyen kaynaklar için **req** değişkenlerini temel alan çok sayıda ban biriktirdiğinizde Varnish, CPU performans sorunlarına neden olabilir. Önbellekteki tüm nesneler listeye göre denetlenene kadar yasaklar yasak listesinde tutulur. Yasaklanan nesneler yeni bir talep almazsa, listede kalırlar. Liste uzadıkça, listeyi her talepte kontrol etmek için daha fazla CPU zamanı gerekir.

Bu nedenle **lurker-friendly** yasakları kullanmanız tavsiye edilir.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://oguzhaninan.gitbook.io/varnish-cache/oenbellegi-gecersiz-kilma/banning.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
