1 Mayıs 2021 Cumartesi

Müşterideki Koşullu GET ve HEAD Taleplerinin Yönetimi

Bir müşteri temsilleri yerel olarak deplolandığında koşullu GET veya HEAD isteklerini kullanabilir. Local depoadaki verilerin devamlı olarak güncel olup olmadığını kontrol etmek şartı ile.

Bir sunucu aynı kaynak için GET ve HEAD isteklerinde bulunurken, bu isteklerin "koşullu" yapmak için aşağıdaki maddelerden yaralanır.
* Deplolanan Last-Modified-Since başlığının değerine sahip If-Modified-Since başlığı 
* Deplolanan ETAG başlığı değerine sahip If-None-Match başlığı

Koşullu isteklerin desteklenmesi, Last-Modified ve ETAG başlıklarının depolanmasını ve daha sonra bunları sunucuya gelecek isteklerle birlikte yeniden kullanmak. Aşağıdaki isteğe göz atalım.

# Request
GET /person/joe HTTP/1.1
Host: www.example.org
# Response
HTTP/1.1 200 OK
Date: Sun, 09 Aug 2009 02:55:46 GMT
Last-Modified: Sun, 09 Aug 2009 00:56:14 GMT
Expires: Sun, 09 Aug 2009 03:55:46 GMT
Cache-Control: max-age=3600,must-revalidate
E-Tag: "3f4a74db207d0447d46710a64971e777"
Content-Type: application/xml; charset=UTF-8
<person xmlns="org:example:people" xmlns:atom="http://www.w3.org/2005/Atom">

   <name>John Doe</name>
   <address>

      <street>1 Main Street</street>
      <city>Seattle</city>
      <atom:link rel="self" href="http://www.example.org/person/john/address"/>
      <state>WA</state>
   </address>
   <atom:link rel="self" href="http://www.example.org/person/john"/>
</person>

Bu istek If-Modified içermediği için koşullu bir istek değildir. If-None-Match den itibaren.

Bu temsili müşterinin ileride kullanması için saklanıyorsa, aşağıdakilerin eklenmesi olasıdır.
Kişinin adı, adresi ve depodaki kaynağın URl ayrıca Last-Modified ve/veya ETAG değerlerini her bir temsilci için aynı deploya dahil edilmesi koşullu isteklerde bulunabilmemiz için kullanılması olasıdır.

Daha sonra sunucunun gösterimi aşağıdaki şekilde değiştirilip  değiştirilmediğini kontrol edebilirsiniz. İstekle birlikte If-Modified-Since ve/veya If-None-Match üstbilgiler ile birlikte.

# Request
GET /person/joe HTTP/1.1
If-Modified-Since: Sun, 09 Aug 2009 00:56:14 GMT
If-None-Match: "3f4a74db207d0447d46710a64971e777"
# Response
HTTP/1.1 304 Not Modified
Date: Sun, 09 Aug 2009 03:10:03 GMT
Last-Modified: Sun, 09 Aug 2009 00:56:14 GMT
Expires: Sun, 09 Aug 2009 04:10:03 GMT
Cache-Control: max-age=3600,must-revalidate
E-Tag: "3f4a74db207d0447d46710a64971e777"

Sunucudan gelen yanıt, müşterinin temsilinin kopyasının hala güncelliğini koruduğu. Bu yanıt aynı zamanda güncellik ömrünü bir saat daha uzatır. Bu şekilde sunucu yanıt döner.

Temsilcinin bir kopyasına sahip değilseniz şartlı talepler göndermeyin.

Hiç yorum yok:

Yorum Gönder