ETag

Bir ETag, web sunucusu veya uygulamanız tarafından ayarlanan bir HTTP cevap başlığıdır (response header). Kaynağın durumuna karşılık gelen benzersiz bir değer içerir. Bu kaynak için benzersiz bir değer oluşturulmaktır. Bu değer, URL'ye ve kaynağın dahili değişiklik tarihine bağlı olarak bir md5 veya sha değeri olabilir. Eşsiz olduğu sürece herhangi bir şey olabilir.

HTTP/1.1 200 OK
Host: localhost
Etag: 7c9d70604c6061da9bb9377d3f00eb27
Content-type: text/html; charset=UTF-8
Hello world

Bir tarayıcı bu ETag'ı görür görmez değerini saklar. Bir sonraki istek üzerine, ETag'ın değeri sunucuya If-None-Match istek başlığında (request header) geri gönderilecektir.

GET /if_none_match.php HTTP/1.1
Host: localhost
User-Agent: curl/7.48.0
If-None-Match: 7c9d70604c6061da9bb9377d3f00eb27

Sunucu bu If-None-Match başlığını alır ve değerin göndermek üzere olduğu ETag'den farklı olup olmadığını kontrol eder. ETag değeri Eşleşme Yok (If-None-Match) değerine eşitse, web sunucusu veya uygulamanız değerin değişmediğini belirtmek için bir HTTP/1.1 304 Not Modified yanıt başlığı döndürebilir.

HTTP/1.0 304 Not Modified
Host: localhost
Etag: 7c9d70604c6061da9bb9377d3f00eb27

Tarayıcı 304'ü alır ve eski verileri çıkartabileceğini bilir. If-None-Match değeri ETag ile eşleşmiyorsa, web sunucusu veya uygulamanız HTTP/1.1 200 OK cevap başlığı ve elbette yeni ETag ile birlikte tam cevabı geri verecektir. Bu, kaynakları korumanın çok iyi bir yoludur. Temel amaç bant genişliğini azaltmak olsa da, doğru şekilde uygularsanız, bellek, CPU döngüleri ve disk G/Ç tüketimini azaltmanıza da yardımcı olur.

Last updated