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ı kullanırken Edge'in HTTP/1.1 önbelleğe alma başlıklarını 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 üstbilgilerinin ve yönergelerinin bir alt kümesini desteklemektedir (desteklenmeyen özellikler bu konuda listelenmiştir).

Ayrıca Edge, belirli üstbilgilerle ilgili olarak yönergelerine göre işlem yapar. Bazı durumlarda bu HTTP/1.1 önbellek üstbilgileri, ResponseCache politikasında belirtilen davranışları geçersiz kılar. Örneğin, bir arka uç sunucusundan Cache-Control üstbilgisi döndürülürse üstbilginin s-maxage yönergesinin, politikadaki diğer geçerlilik bitimi ayarlarını geçersiz kılmasına neden olabilirsiniz.

Başlık Destek
Cache-Control (Önbellek Denetimi) Arka uç kaynak sunucularından 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-Since GET isteklerinde, geçerli bir önbellek girişi olsa bile üstbilgi kaynak sunucuya iletilir.
Accept-Encoding 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 üst bilgilerine izin verir). Kaynak sunucular, hem Apigee Edge API proxy'sinde tanımlanan hedef uç noktaları hem de TargetServer API çağrıları kullanılarak oluşturulanları içerebilir.

Önbellek kontrolü desteğiyle ilgili sınırlamalar

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

  • Apigee Edge, gelen istemci istekleriyle birlikte gelen Cache-Control başlıklarını desteklemez.
  • Apigee Edge yalnızca herkese açık önbellek kavramını destekler. (HTTP spesifikasyonuna göre Cache-Control, herkese açık (paylaşılan) veya gizli (tek kullanıcı) olabilir.)
  • Apigee Edge, HTTP/1.1 spesifikasyonundaki 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 desteği başlıklı makaleye bakın.

Cache-Control yanıt başlığı yönergeleri desteği

Apigee, kaynak sunuculardan gelen yanıtlarda HTTP/1.1 spesifikasyonundaki yönergelerin bir alt kümesini 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önergeyle belirtilen saniye sayısı boyunca önbelleğe alınabilir.

Bu yönerge, s-maxage yönergesi tarafından geçersiz kılınır ve Expires üstbilgisini geçersiz kılar. Ayrıca, politikanın <ExpirySettings> öğesi tarafından da geçersiz kılınabilir. Daha fazla bilgi için "Önbellek girişi son kullanma tarihi ayarlama" ve <UseResponseCacheHeaders> bölümüne bakın. Yanıt önbelleği politikası.

must-revalidate Desteklenmiyor. Tüm önbellek girişleri, süreleri dolduğu anda 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 sunucuyla yeniden doğrulanması gerekir. Bu kural, kaynağın yanıtın önbellekten döndürülmesi gerektiğini belirtmek için 304 Değiştirilmedi yanıtını döndürmesine olanak tanır. Böylece, yanıtın tamamını döndürmek için gereken işlemeyi kaydeder. Kaynak sunucu tam bir yanıt döndürürse mevcut önbellek girişi değiştirilir. Bu yönergeyle belirtilen tüm alan adları yok sayılır.

no-store Desteklenmiyor.
no-transform Desteklenmiyor.
private Desteklenmiyor. Bu yönerge alınırsa kaynak yanıtı önbelleğe alınmaz. Tüm alan adları yoksayılır.
proxy-revalidate Desteklenmiyor. Tüm önbellek girişleri, süreleri dolduğu anda Apigee Edge tarafından silinir.
public Diğer yönergeler farklı bir durumu belirtse bile Edge, kaynak yanıtını önbelleğe alır. HTTP/1.1 spesifikasyonuna göre bu kuralın tek istisnası, yanıtta bir yetkilendirme üstbilgisinin bulunmasıdır.
s-maxage

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

Bu yönerge, max-age yönergesini ve Expires üstbilgisini geçersiz kılar. Politikanın <ExpirySettings> öğesi tarafından geçersiz kılınabilir. Daha fazla bilgi için "Önbellek girişi son kullanma tarihi ayarlama" ve <UseResponseCacheHeaders> bölümüne bakın. Yanıt önbelleği politikası.

Geçerlilik bitiş tarihi

ResponseCache politikasındaki UseResponseCacheHeaders işareti true olarak ayarlandığında Edge, önbelleğe alınmış bir girişin geçerlilik süresini (TTL) belirlemek için Expires üst bilgisini kullanabilir. Bu üstbilgi, bir yanıtın önbellek girişinin ne zaman eski olarak kabul edileceğini belirten bir tarih/saat belirtir. Bu başlık, sunucuların bir zaman damgasına göre önbelleğe alınmış bir değerin döndürülmesinin uygun olduğu zamanı bildirmesine olanak tanır.

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

Geçerlilik tarihi: Perşembe, 01 Aralık 1994 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 Header Field Definitions (Üstbilgi Alanı Tanımları) bölümüne bakın.

ETag

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

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

HTTP/1.1 spesifikasyonundaki Protokol Parametreleri bölümünde ETag'ler hakkında daha fazla bilgi edinebilirsiniz.

If-Match

If-Match istek başlığıyla, üst bilgideki ETag önbelleğe alınmış ETag ile eşleşiyorsa önbelleğe alınmış bir öğe günceldir. If-Match üstbilgisini belirten GET dışındaki tüm istekler, kaynak önbelleğe alma tesislerinin isteği işleme şansı olması için kaynak sunucuya iletilir.

If-Match hakkında daha fazla bilgiyi HTTP/1.1 spesifikasyonundaki Header Field Definitions (Üstbilgi Alanı Tanımları) bölümünde bulabilirsiniz.

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

Siz Sonra
If-Match başlığı, bir veya daha fazla ETag belirtir.
  1. Apigee Edge, belirtilen kaynak için süresi dolmamış tüm önbellek girişlerini alır ve bu önbelleğe alınmış girişlerdeki tüm güçlü ETag'leri If-Match üstbilgisinde belirtilenlerle karşılaştırır.
  2. Eşleşme bulunursa önbellek girişi döndürülür.
  3. Aksi takdirde istek, kaynak sunucuya iletilir.
If-Match üstbilgisi "*" değerini belirtir. İsteğin, kaynak önbelleğe alma olanaklarının isteği işleme şansı olması için kaynak sunucuya iletilir.
Aynı istek URI'sine sahip bir önbellek girişi bulunuyor ancak yalnızca zayıf ETag'ler içeriyor Girişin istemciye döndürülmeden önce kaynak sunucu tarafından yeniden doğrulanması gerekir.
ETag'ler kaynak sunucudan gelir. ETag, istemciye değiştirilmeden döndürülür.

If-None-Match

If-None-Match üst bilgisiyle, üst bilgideki ETag, önbelleğe alınmış ETag ile eşleşmiyorsa önbelleğe alınmış öğe günceldir. Bu üstbilgiyi içeren GET dışındaki istekler, kaynak sunucuya iletilir.

Edge, bu üst bilgiyle gelen bir GET isteği alırsa:

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

If-None-Match üstbilgisinde "*" belirtiliyor ve istenen URI için süresi dolmamış bir önbelleğe alınmış giriş mevcut

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

If-Modified-Since

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

Bu, Apigee Edge'den geçmeyen bir kaynakta yapılan 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 durumunu döndürürse Edge, önbelleğe alınmış yanıtın Last-Modified başlığı değişmediğini gösteriyorsa yanıt değerini döndürür.

Accept-Encoding

Gelen bir istekte Accept-Encoding başlığı gzip, deflate veya compress değerleriyle birlikte yer aldığında, 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 beklenir. Apigee'nin yanıt önbelleğe alma mekanizması, kaynak sunucuya geri dönmeden gelen başlıklara bağlı olarak hem sıkıştırılmış hem de sıkıştırılmamış yanıtlar gönderebilir.

Anahtarları, önbelleğe alınmış her öğe için daha anlamlı hale getirmek amacıyla önbellek anahtarlarına Accept üstbilgi değerleri ekleyebilirsiniz. Daha fazla bilgi için Yanıt önbelleği politikası bölümündeki "Önbellek anahtarı yapılandırma" konusuna bakın.