> For the complete documentation index, see [llms.txt](https://oguzhaninan.gitbook.io/varnish-cache/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://oguzhaninan.gitbook.io/varnish-cache/varnish-http/oenbellek-varyasyonlari.md).

# Önbellek Varyasyonları

Genel olarak, bir HTTP cevabı herkes için aynıdır ve her tüketici için aynı değere sahiptir. Veriler kullanıcıya özelse, teoride önbelleklenebilir olmayacaktır. Ancak, bu kuralın istisnaları vardır ve HTTP'nin bunun için bir mekanizması vardır.&#x20;

HTTP, önbellek varyasyonlarını gerçekleştirmek için **Vary** başlığını kullanır. **Vary** başlığı, arka uç tarafından gönderilen bir yanıt başlığıdır. Bu başlığın değeri, değişken olması için kullanılması gereken istek başlığının adını içerir.

Çok yaygın bir örnek, **Accept-Language** dil tespiti için kullanılır. Tarayıcınız bu başlığı her istek üzerine gönderecektir. Tarayıcınızın desteklediği bir dizi dil veya yerel ayar içerir. Uygulamanız daha sonra çıktının dilini belirlemek için bu başlığın değerini kullanabilir. İstenilen dil URL’de veya bir çerezde görünmüyorsa, bilmenin tek yolu **Accept-Language** kullanmaktır.&#x20;

**Vary** başlığı ayarlanmamışsa, önbellek (tarayıcı önbelleği veya herhangi bir aracı önbellek), farkı tanımlamanın bir yolu yoktur ve nesneyi ilk isteğe göre depolar. Bu ilk istek Hollandaca yapılırsa, önbellek kullanım ömrü boyunca tarayıcı dili ne olursa olsun diğer tüm kullanıcılara Hollandaca çıkacaktır.

Bu ciddi bir sorundur, bu durumda uygulama, **Accept-Language** kendi değeri olarak içeren bir **Vary** başlığı döndürür. İşte bir örnek:

```http
GET / HTTP/1.1
Host: localhost
Accept-Language: nl
```

Uygulama, önbelleğe, isteğin **Accept-Language** değerini temel alarak önbelleğe alınmış nesnenin ayrı bir sürümünü tutmasını bildiren bir **Vary** başlığı belirler.

```http
HTTP/1.1 200 OK
Host: localhost
Vary: Accept-Language
Hallo, deze pagina is in het Nederlands geschreven
```

Önbellek, bu kaynağın Hollanda dilinde bir sürümü olduğunu bilir ve ayrı olarak depolar. Bir sonraki istek yalnızca İngilizce'yi destekleyen bir tarayıcıdan gönderildiğinde, Hollandaca çıktı içeren önbellek nesnesi kullanılmayacaktır. Yeni bir arka uç isteği yapılacak ve çıktı ayrı olarak depolanacak.

Varnish, **Vary** başlığını dikkate alır ve standart tanımlayıcıların üstündeki önbellekte varyasyonlar ekler. Önbelleğe alınmış bir nesnenin tipik tanımlayıcıları, web site adı (veya hiçbir site adı belirlenmemişse IP) ve URL'dir. Varnish bir önbellek varyasyonu fark ettiğinde, bu sürüm için bir önbellek nesnesi oluşturur.
