HTTP yanıt başlıkları desteği

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Bu konuda, ResponseCache politikasını kullandığınızda Edge'in HTTP/1.1 önbelleğe alma üst bilgilerini nasıl işlediği açıklanmaktadır. Apigee Edge şu anda arka uç hedef (kaynak) sunucularından alınan HTTP/1.1 önbelleğe alma üst bilgileri ve yönergelerinin (bu konuda desteklenmeyen özellikler listelenmiştir) bir alt kümesini desteklemektedir.

Ayrıca, belirli başlıklarla Edge, kendi yönergelerine göre işlem yapar. Bazı durumlarda, bu HTTP/1.1 önbellek üst bilgileri ResponseCache politikasında belirtilen davranışı geçersiz kılar. Örneğin, Cache-Control üst bilgisi bir arka uç sunucusundan döndürülürse başlığın s-maxage yönergesinin, politikadaki diğer geçerlilik süresi ayarlarını geçersiz kılmasını sağlayabilirsiniz.

Başlık Destek
Önbellek-Denetim Arka uç kaynak sunuculardan döndürülen yanıtlarda desteklenir ancak istemci isteklerinde desteklenmez. Edge, yönergelerin bir alt kümesini destekler.
Son geçerlilik tarihi Desteklenir. Geçersiz kılınabilir.
Varlık Etiketleri (ETag'ler) If-Match ve If-None-Match için özel davranış.
If-Modified-İlki GET isteklerinde, geçerli bir önbellek girişi mevcut olsa bile başlık kaynak sunucuya iletilir.
Kodlama-Kabul Et Edge, gelen üstbilgilere bağlı olarak sıkıştırılmış veya sıkıştırılmamış yanıtlar gönderir.

Önbellek-Denetimi

Apigee Edge, Cache-Control üst bilgisini yalnızca arka uç kaynak sunucularından döndürülen yanıtlarda destekler (HTTP/1.1 spesifikasyonu, hem istemci isteklerinde hem de kaynak sunucu yanıtlarında Cache-Control üstbilgilerine izin verir). Kaynak sunucular, hem Apigee Edge API proxy'sinde tanımlanan hem de TargetServer API çağrıları kullanılarak oluşturulan hedef uç noktaları içerebilir.

Önbellek Kontrolü destek sınırlamaları

Apigee Edge, HTTP/1.1 spesifikasyonunda tanımlanan Cache-Control yanıt başlığı özelliklerinin bir alt kümesini destekler. Önemli:

  • Apigee Edge, gelen istemci istekleriyle gelen Cache-Control üstbilgilerini desteklemez.
  • Apigee Edge, yalnızca herkese açık önbellek kavramını destekler. (HTTP spesifikasyonuna göre Cache-Control, herkese açık (paylaşılan) veya özel (tek kullanıcı) olabilir.
  • Apigee Edge, HTTP/1.1 spesifikasyonunda Cache-Control yanıt yönergelerinin yalnızca bir alt kümesini destekler. Ayrıntılar için Cache-Control yanıt başlığı yönergeleri için destek bölümüne bakın.

Cache-Control yanıt başlığı yönergeleri için destek

Apigee, kaynak sunuculardan gelen yanıtlarla ilgili olarak HTTP/1.1 spesifikasyonundan bir alt küme yönergelerini destekler. Aşağıdaki tabloda, HTTP Cache-Control yanıt başlığı yönergeleri için Apigee Edge desteği açıklanmaktadır.

Burada listelenen yönergeler hakkında daha ayrıntılı bilgi için HTTP/1.1 spesifikasyonundaki Cache-Control bölümüne bakın.

Cache-Control yönergesi Apigee Edge, yönergeyi nasıl işler?
cache-extension Desteklenmiyor.
max-age

ResponseCache politikanız <UseResponseCacheHeaders> öğesini true olarak ayarlarsa yanıt, bu yönerge tarafından belirtilen saniye sayısı boyunca önbelleğe alınabilir.

Bu yönerge, s-maxage yönergesi tarafından ve Expires üst bilgisini geçersiz kılar. Ayrıca politikanın <ExpirySettings> öğesi tarafından geçersiz kılınabilir. Daha fazla bilgi için Yanıt Önbelleği politikasında "Önbellek girişi geçerlilik süresini ayarlama" ve <UseResponseCacheHeaders> bölümlerine bakın.

must-revalidate Desteklenmiyor. Tüm önbellek girişleri, süreleri dolar dolmaz Apigee Edge tarafından silinir.
no-cache

Edge, kaynak yanıtını önbelleğe alır ancak sonraki istemci isteklerini karşılamak için kullanılmadan önce kaynak sunucu ile yeniden doğrulanması gerekir. Bu kural, kaynağın önbellekten döndürülmesi gerektiğini belirtmek amacıyla 304 Değiştirilmedi yanıtı döndürmesine olanak tanır. Böylece, yanıtın tamamını döndürmek için gereken işlem kaydedilir. Kaynak sunucu tam yanıt döndürürse mevcut önbellek girişinin yerini alır. Bu yönergeyle belirtilen alan adları yoksayılır.

no-store Desteklenmiyor.
no-transform Desteklenmiyor.
private Desteklenmiyor. Bu yönerge alınırsa kaynak yanıtı önbelleğe alınmaz. Alan adları yok sayılır.
proxy-revalidate Desteklenmiyor. Tüm önbellek girişleri, süreleri dolar dolmaz Apigee Edge tarafından silinir.
public Edge, diğer yönergeler aksini belirttiğinde bile kaynak yanıtını önbelleğe alır. HTTP/1.1 spesifikasyonu uyarınca, bu kuralın tek istisnası yanıtın bir Yetkilendirme üst bilgisi içermesidir.
s-maxage

ResponseCache politikanız <UseResponseCacheHeaders> öğesini true olarak ayarlarsa yanıt, bu yönerge tarafından belirtilen saniye sayısı boyunca önbelleğe alınabilir.

Bu yönerge, max-age yönergesini ve Expires üst bilgisini geçersiz kılar. Politikanın <ExpirySettings> öğesi tarafından geçersiz kılınabilir. Daha fazla bilgi için Yanıt Önbelleği politikasında "Önbellek girişi geçerlilik süresini ayarlama" ve <UseResponseCacheHeaders> bölümlerine bakın.

Geçerlilik sonu:

ResponseCache politikasındaki UseResponseCacheHeaders işareti true olarak ayarlandığında Edge, önbelleğe alınan bir girişin geçerlilik süresini (TTL) belirlemek için Expires üst bilgisini kullanabilir. Bu başlık, bir yanıtın önbellek girişinin eski olarak kabul edileceği tarihi/saati belirtir. Bu üst bilgi, sunucuların bir zaman damgasına göre önbelleğe alınmış bir değeri döndürmenin uygun olduğu zamanları sinyal vermesini sağlar.

Expires başlığı için kabul edilen tarih biçimleri HTTP/1.1 spesifikasyonunda açıklanmıştır. Örneğin:

Sona erme tarihi: 01 Aralık 1994 Perşembe 16:00:00 GMT

HTTP tarih/saat biçimleri hakkında ayrıntılı bilgi için HTTP/1.1 spesifikasyonundaki Tarih/Saat Biçimleri bölümüne bakın.

Expires üstbilgisi hakkında daha fazla bilgi için HTTP/1.1 spesifikasyonundaki Üstbilgi Alanı Tanımları'na bakın.

ETag

Varlık etiketi (ETag), istenen kaynakla ilişkilendirilmiş bir tanımlayıcıdır. Sunucu, ETag kullanarak istenen kaynağın ve ilişkili önbelleğe alınan kaynağın eşleşip eşleşmediğini belirleyebilir. Örneğin, sunucu şu anda önbelleğe alınan yanıtla eşleşmezse yanıtı yeniden önbelleğe alabilir. ETag'ler eşleşirse önbelleğe alınan kaynağı döndürebilir.

Hedef uç nokta, Edge'e ETag ile yanıt gönderdiğinde Edge, yanıtla birlikte ETag'i de önbelleğe alır.

Varlık Etiketleri hakkında daha fazla bilgiyi HTTP/1.1 spesifikasyonundaki Protokol Parametreleri bölümünde bulabilirsiniz.

Eşleşme varsa

If-Match istek üst bilgisinde, başlıktaki ETag önbelleğe alınan ETag ile eşleşiyorsa önbelleğe alınmış varlık geçerlidir. If-Match üst bilgisi belirten GET harici tüm istekler kaynak sunucuya iletilir. Böylece, kaynak önbelleğe alma tesislerinin isteği işleme alma şansına sahip olması sağlanır.

If-Match hakkında daha fazla bilgiyi HTTP/1.1 spesifikasyonundaki Üstbilgi Alanı Tanımları bölümünden edinebilirsiniz.

Edge, If-Match üst bilgisi içeren bir istemciden gelen GET isteği alırsa:

Eğer Sonra
If-Match başlığı bir veya daha fazla ETag belirtiyor
  1. Apigee Edge, belirtilen kaynak için süresi dolmamış önbellek girişlerini alır ve bu önbelleğe alınmış girişlerdeki güçlü ETag'leri If-Match başlığında belirtilenlerle karşılaştırır.
  2. Bir eşleşme bulunursa önbellek girişi döndürülür.
  3. Aksi takdirde, istek kaynak sunucuya iletilir.
If-Match başlığı "*" belirtir İstek, kaynak önbelleğe alma tesislerinin isteği işleme fırsatına sahip olmasını sağlamak için kaynak sunucuya iletilir
Aynı istek URI'sına sahip bir önbellek girişi bulundu, ancak yalnızca zayıf ETag'ler içeriyor Giriş, istemciye döndürülmeden önce kaynak sunucu tarafından yeniden doğrulanmalıdır
ETag'ler kaynak sunucudan gelir. ETag, müşteriye değiştirilmeden döndürülür

Eğer-Hiçbiri-Eşleşmez

If-None-Match üst bilgisinde, başlıktaki ETag önbelleğe alınmış ETag ile eşleşmiyorsa önbelleğe alınmış bir varlık geçerlidir. Bu üst bilgiyi içeren GET harici istekler kaynak sunucuya iletilir.

Edge şu üstbilgiye sahip gelen bir GET isteği alırsa:

Eğer Sonra
If-None-Match başlığı bir veya daha fazla ETag belirtiyor
  1. Apigee Edge, belirtilen URI için süresi dolmamış önbellek girişlerini alır ve bu önbelleğe alınmış girişlerdeki güçlü ETag'leri If-None-Match başlığında belirtilenlerle karşılaştırır.
  2. Bir eşleşme bulunursa Edge, 304 Değiştirilmedi durumunu döndürür. Eşleşme bulunmazsa Edge, isteği kaynak sunucuya iletir.

If-None-Match başlığı "*" ifadesini belirtiyor ve istenen URI için süresi dolmamış önbelleğe alınmış bir giriş var

Edge, 304 Değiştirilmedi durumu döndürüyor
Aynı istek URI'sına sahip bir önbellek girişi bulundu ancak yalnızca zayıf ETag'ler içeriyor Girişin, Edge tarafından istemciye döndürülmeden önce kaynak sunucu tarafından yeniden doğrulanması gerekir.
Edge, kaynak sunucudan bir ETag alır ETag, müşteriye değiştirilmeden döndürülür

Değiştirilme Tarihi

Apigee Edge, GET isteğinde bir If-Modified-Since başlığı alırsa geçerli bir önbellek girişi mevcut olsa bile bu başlık kaynak sunucuya iletilir.

Bu, bir kaynakta yapılan ve Apigee Edge'den geçemeyen tüm güncellemelerin dikkate alınmasını sağlar. Kaynak sunucu yeni bir varlık döndürürse Edge mevcut önbellek girişini yeni değerle değiştirir. Sunucu 304 Değiştirilmedi durumu döndürürse önbelleğe alınan yanıtın Last-Modified üstbilgisi, yanıtın değişmediğini belirtiyorsa Edge bu yanıt değerini döndürür.

Kodlamayı Kabul Et

Gelen istek gzip, deflate veya compress değerlerine sahip Accept-Encoding üst bilgisini içerdiğinde kaynak sunucu sıkıştırılmış verilerle yanıt verir. Sonraki istekler Accept-Encoding başlıkları olmadan geldiğinde, sıkıştırılmamış bir yanıt bekler. Apigee'nin yanıt önbelleğe alma mekanizması, gelen üst bilgilere bağlı olarak kaynak sunucuya geri dönmeden hem sıkıştırılmış hem de sıkıştırılmamış yanıtlar gönderebilir.

Anahtarların önbelleğe alınan her bir öğe için daha anlamlı olmasını sağlamak amacıyla, önbellek anahtarlarına Kabul et üst bilgi değerlerinin eklenmesini sağlayabilirsiniz. Daha fazla bilgi için Yanıt Önbelleği politikası sayfasındaki "Önbellek anahtarı yapılandırma" bölümüne bakın.