Aktif olarak hiç kullanmadım ama araştırmam sonucu gayet güzel/kullanışlı bir teknik olarak görünüyor. Hemen öncelikle bir açıklaması arkadasından biraz daha detaylı çalışmasını yazayım.
ETag (Entity Tag) : İnternet tarayıcılarının daha performanslı çalışması için bir cache validasyonu ve şarta bağlı istek(conditional request) yapılmasını mümkün kılan bir teknik.Bir etag değeri bir kaynağın belirli versiyonunu göstermek/kullanmak için kullanılır. Biraz daha açalım, mesela bir js dosyaları için güzel bir kullanımı olabilir. Sunucu tarafından bir js dosyasına kod üretiliyor ve response içinde etag başlığıyla döndürülüyor. Bir sonraki istekde istemci eğer bu etag için bana js dosyasını gönder derse ve o etag kodu değişmemişse sunucu cevap olarak değişiklik olmadı sende olanı kullan diyor.
Şimdi aşama aşama açalım.
İstemci belirli bir kaynak için istek atar (örneğin js dosyası, resim dosyası veya bir api isteği)
Sunucu ürettiği cevaba bir de anlık kod üretir ve bunu response içinde etag başlığıyla (response header) döner, örneğin: ETag: “version1”
Dönen cevap HTTP200 olarak döndükten sonra (başka kodlarda olur mu emin değilim ama 200 mantıklı) client uygulama (tarayıcı, ya da kendi geliştirdiğimiz uygulama) bu cevabı başlıklarıyla beraber hafızaya alır.
Daha sonraki safhada istemci uygulama tekrar aynı kaynak için istek atarken istek başlığına If-None-Match: “response_version1” şeklinde bir madde ekler.
Sunucu tarafı bu If-None-Match başlığını ve değeri aldıktan sonra cevap için oluşturduğu/oluşturacağı etag kodu ile kıyaslama yapar
Eğer oluşturduğu yeni oluşturulan etag değeri istek içinde gelen etag değeri ile eşleşirse sunucu HTTP304(not modified) ile içi boş bir cevap döner ve uygulamaya hafızaya aldığını kullan şeklinde bir işaret vermiş olur.
Eğer yeni oluşturulan değer istekde gelen ile eşleşmezse HTTP200 ile yeni cevabı hazırlar ve yeni bir etag değeri ile dönüş yapar ki istemci uygulama tekrar hafızaya alabilsin.
Yöntem sunucu tarafının insiyatifinde kalır. Sunucu isterse cevabı tekrar oluşturup ondan bir hash kod çıkarabilir veya kendi istediği bir algoritma kullanabilir. Bu şekilde ağ üzerindeki trafikten kazanım yapılır.
Aktif olarak hiç kullanmadım ama araştırmam sonucu gayet güzel/kullanışlı bir teknik olarak görünüyor. Hemen öncelikle bir açıklaması arkadasından biraz daha detaylı çalışmasını yazayım.
ETag (Entity Tag) : İnternet tarayıcılarının daha performanslı çalışması için bir cache validasyonu ve şarta bağlı istek(conditional request) yapılmasını mümkün kılan bir teknik.Bir etag değeri bir kaynağın belirli versiyonunu göstermek/kullanmak için kullanılır. Biraz daha açalım, mesela bir js dosyaları için güzel bir kullanımı olabilir. Sunucu tarafından bir js dosyasına kod üretiliyor ve response içinde etag başlığıyla döndürülüyor. Bir sonraki istekde istemci eğer bu etag için bana js dosyasını gönder derse ve o etag kodu değişmemişse sunucu cevap olarak değişiklik olmadı sende olanı kullan diyor.
Şimdi aşama aşama açalım.
Yöntem sunucu tarafının insiyatifinde kalır. Sunucu isterse cevabı tekrar oluşturup ondan bir hash kod çıkarabilir veya kendi istediği bir algoritma kullanabilir. Bu şekilde ağ üzerindeki trafikten kazanım yapılır.
https://www.geeksforgeeks.org/what-is-http-etag/
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag