Aracılığıyla paylaş


Önbelleğe alma nasıl işler?

Bu makalede genel önbelleğe alma kavramlarına ve Azure Content Delivery Network'ün performansı geliştirmek için önbelleğe almayı nasıl kullandığına genel bir bakış sağlanır. İçerik teslim ağı uç noktanızda önbelleğe alma davranışını özelleştirme hakkında bilgi edinmek isterseniz bkz . Azure Content Delivery Network önbelleğe alma davranışını önbelleğe alma kurallarıyla denetleme ve Sorgu dizeleriyle Azure Content Delivery Network önbelleğe alma davranışını denetleme.

Önbelleğe alma işlemine giriş

Önbelleğe Alma, gelecekte bu verilere yönelik isteklere daha hızlı erişilebilmesi için verileri yerel olarak depolama işlemidir. En yaygın önbelleğe alma türü olan web tarayıcısı önbelleğinde, bir web tarayıcısı statik verilerin kopyalarını yerel bir sabit sürücüde yerel olarak depolar. Web tarayıcısı önbelleğe alma özelliğini kullanarak sunucuya birden çok gidiş dönüş yapmaktan kaçınabilir ve bunun yerine aynı verilere yerel olarak erişerek zaman ve kaynak tasarrufu sağlayabilir. Önbelleğe Alma, statik görüntüler, CSS dosyaları ve JavaScript dosyaları gibi küçük, statik verileri yerel olarak yönetmek için uygundur.

Benzer şekilde, önbelleğe alma, kullanıcıya yakın uç sunucularda bulunan bir içerik teslim ağı tarafından, kaynak öğeye geri dönen isteklerden kaçınmak ve son kullanıcı gecikme süresini azaltmak için kullanılır. Yalnızca tek bir kullanıcı için kullanılan bir web tarayıcısı önbelleğinden farklı olarak, içerik teslim ağı paylaşılan bir önbelleğe sahiptir. İçerik teslim ağı paylaşılan önbelleğinde, bir kullanıcının dosya isteği başka bir kullanıcı tarafından kullanılabilir ve bu da kaynak sunucuya yapılan istek sayısını büyük ölçüde azaltır.

Sık değişen veya tek bir kullanıcı için benzersiz olan dinamik kaynaklar önbelleğe alınamaz. Ancak bu tür kaynaklar, performans geliştirmeleri için Azure içerik teslim ağında dinamik site hızlandırma (DSA) iyileştirmesinin avantajlarından yararlanabilir.

Önbelleğe Alma kaynak sunucu ile son kullanıcı arasında birden çok düzeyde gerçekleşebilir:

  • Web sunucusu: Paylaşılan önbellek kullanır (birden çok kullanıcı için).
  • İçerik teslim ağı: Paylaşılan önbellek kullanır (birden çok kullanıcı için).
  • İnternet hizmet sağlayıcısı (ISS): Paylaşılan önbellek kullanır (birden çok kullanıcı için).
  • Web tarayıcısı: Özel önbellek (bir kullanıcı için) kullanır.

Her önbellek genellikle kendi kaynak güncelliğini yönetir ve bir dosya eskidiğinde doğrulama gerçekleştirir. Bu davranış, HTTP önbelleğe alma belirtimi olan RFC 7234'te tanımlanır.

Kaynak güncelliği

Önbelleğe alınmış bir kaynak eski veya eski (kaynak sunucusundaki ilgili kaynağa göre) olabileceğinden, içeriğin ne zaman yenileneceğini denetlemek için herhangi bir önbelleğe alma mekanizması önemlidir. Zaman ve bant genişliği tüketiminden tasarruf etmek için, önbelleğe alınmış bir kaynak her erişildiğinde kaynak sunucusundaki sürümle karşılaştırılamaz. Bunun yerine, önbelleğe alınmış bir kaynağın yeni olduğu kabul edildiği sürece en güncel sürüm olduğu varsayılır ve doğrudan istemciye gönderilir. Önbelleğe alınmış bir kaynak, yaşı önbellek ayarı tarafından tanımlanan yaş veya sürenin altında olduğunda yeni olarak kabul edilir. Örneğin, bir tarayıcı bir web sayfasını yeniden yüklediğinde, sabit sürücünüzdeki önbelleğe alınmış her kaynağın yeni olduğunu doğrular ve bu kaynağı yükler. Kaynak yeni değilse (eski), sunucudan güncel bir kopya yüklenir.

Doğrulama

Bir kaynak eski olarak kabul edilirse, kaynak sunucudan önbellekteki verilerin hala kaynak sunucudaki veriyle eşleşip eşleşmediğini belirlemek için kaynağı doğrulaması istenir. Dosya kaynak sunucuda değiştirilmişse, önbellek kaynağın sürümünü güncelleştirir. Aksi takdirde, kaynak yeniyse veriler önce doğrulanmadan doğrudan önbellekten teslim edilir.

İçerik teslim ağı önbelleğe alma

Önbelleğe Alma, bir içerik teslim ağının teslimi hızlandırmak ve görüntüler, yazı tipleri ve videolar gibi statik varlıklar için kaynak yükünü azaltmak için çalışma şeklinin ayrılmaz bir parçasıdır. İçerik teslim ağı önbelleğinde statik kaynaklar, bir kullanıcı için daha yerel olan stratejik olarak yerleştirilmiş sunucularda seçmeli olarak depolanır ve aşağıdaki avantajları sunar:

  • Web trafiğinin çoğu statik olduğundan (örneğin, resimler, yazı tipleri ve videolar), içerik teslim ağı önbelleğe alma, içeriği kullanıcıya yaklaştırarak ağ gecikme süresini azaltır ve böylece verilerin kat ettiği mesafeyi azaltır.

  • İşi bir içerik teslim ağına boşaltarak önbelleğe alma, ağ trafiğini ve kaynak sunucudaki yükü azaltabilir. Bunun yapılması, çok sayıda kullanıcı olsa bile uygulamanın maliyetini ve kaynak gereksinimlerini azaltır.

Önbelleğe alma işleminin bir web tarayıcısında uygulanmasına benzer şekilde, önbellek yönergesi üst bilgileri göndererek bir içerik teslim ağında önbelleğe alma işleminin nasıl gerçekleştirildiğini denetleyebilirsiniz. Önbellek yönergesi üst bilgileri, genellikle kaynak sunucu tarafından eklenen HTTP üst bilgileridir. Bu üst bilgilerin çoğu başlangıçta istemci tarayıcılarında önbelleğe almayı ele almak için tasarlanmış olsa da, artık içerik teslim ağları gibi tüm ara önbellekler tarafından da kullanılmaktadır.

Önbellek güncelliğini tanımlamak için iki üst bilgi kullanılabilir: Cache-Control ve Expires. Cache-Control daha günceldir ve her ikisi de varsa' den Expiresönceliklidir. Doğrulama için kullanılan iki tür üst bilgi de vardır (doğrulayıcılar olarak adlandırılır): ETag ve Last-Modified. ETag daha günceldir ve her ikisi de tanımlanmışsa' den Last-Modifiedönceliklidir.

Önbellek yönergesi üst bilgileri

Önemli

Varsayılan olarak, DSA için iyileştirilmiş bir Azure Content Delivery Network uç noktası önbellek yönergesi üst bilgilerini yoksayar ve önbelleğe almayı atlar. Edgio profillerinden Azure CDN Standard için, önbelleğe almayı etkinleştirmek için içerik teslim ağı önbelleğe alma kurallarını kullanarak bir Azure Content Delivery Network uç noktasının bu üst bilgileri nasıl ele almasını ayarlayabilirsiniz. Yalnızca Edgio profillerinden Azure CDN Premium için önbelleğe almayı etkinleştirmek için kural altyapısınıkullanırsınız.

Azure Content Delivery Network, önbellek süresini ve önbellek paylaşımını tanımlayan aşağıdaki HTTP önbellek yönergesi üst bilgilerini destekler.

Önbellek Denetimi:

  • Web yayımcılarına içerikleri üzerinde daha fazla denetim sağlamak ve üst bilgi sınırlamalarını ele almak için HTTP 1.1'de Expires kullanıma sunulmuştur.
  • Expires Hem hem de Cache-Control tanımlanmışsa üst bilgiyi geçersiz kılar.
  • İstemciden içerik teslim ağı POP'a bir HTTP isteğinde kullanıldığında, Cache-Control varsayılan olarak tüm Azure Content Delivery Network profilleri tarafından yoksayılır.
  • Kaynak sunucudan içerik teslim ağı POP'sine bir HTTP yanıtında kullanıldığında:

Sona eri -yor:

  • HTTP 1.0'da tanıtılan eski üst bilgi; geriye dönük uyumluluk için desteklenir.
  • İkinci duyarlık ile tarih tabanlı bir süre sonu zamanı kullanır.
  • benzeri.Cache-Control: max-age
  • Mevcut olmadığında Cache-Control kullanılır.

Pragma:

  • Varsayılan olarak Azure Content Delivery Network tarafından kabul edilmez.
  • HTTP 1.0'da tanıtılan eski üst bilgi; geriye dönük uyumluluk için desteklenir.
  • Aşağıdaki yönergeyle bir istemci isteği üst bilgisi olarak kullanılır: no-cache. Bu yönerge, sunucuya kaynağın yeni bir sürümünü teslim etme talimatını verilmektedir.
  • Pragma: no-cache eşdeğeri, Cache-Control: no-cache olur.

Doğrulayıcıları

Önbellek eski olduğunda, bir dosyanın önbelleğe alınmış sürümünü kaynak sunucudaki sürümle karşılaştırmak için HTTP önbellek doğrulayıcıları kullanılır. Edgio'dan Azure CDN Standard/Premium varsayılan olarak hem hem de ETagLast-Modified doğrulayıcıları desteklerken , Microsoft'tan Azure CDN Standard yalnızca Last-Modifieddestekler.

Etag:

  • Edgio'dan Azure CDN Standard/Premium varsayılan olarak desteklerken ETag, Microsoft'tan Azure CDN Standard desteklemez.
  • ETag , bir dosyanın her dosyası ve sürümü için benzersiz bir dize tanımlar. Örneğin, ETag: "17f0ddd99ed5bbe4edffdd6496d7131f".
  • HTTP 1.1'de kullanıma sunulmuştur ve değerinden Last-Modifieddaha günceldir. Son değiştirme tarihinin belirlenmesi zor olduğunda kullanışlıdır.
  • Hem güçlü doğrulamayı hem de zayıf doğrulamayı destekler; ancak Azure Content Delivery Network yalnızca güçlü doğrulamayı destekler. Güçlü doğrulama için iki kaynak gösterimi bayt için bayt aynı olmalıdır.
  • Önbellek, istekte bir veya daha fazla ETag doğrulayıcı içeren bir üst bilgi göndererek kullanan ETag bir If-None-Match dosyayı doğrular. Örneğin, If-None-Match: "17f0ddd99ed5bbe4edffdd6496d7131f". Sunucunun sürümü listedeki bir ETag doğrulayıcıyla eşleşiyorsa, yanıtında 304 (Değiştirilmedi) durum kodu gönderir. Sürüm farklıysa, sunucu durum kodu 200 (Tamam) ve güncelleştirilmiş kaynakla yanıt verir.

Son Değiştirme Tarihi:

  • Yalnızca Edgio'dan Azure CDN Standard/Premium için HTTP Last-Modified yanıtının bir parçası değilse kullanılır ETag .
  • Kaynak sunucunun kaynağın son değiştirildiğini belirlediği tarih ve saati belirtir. Örneğin, Last-Modified: Thu, 19 Oct 2017 09:28:00 GMT.
  • Önbellek, istekte tarih ve saat içeren bir If-Modified-Since üst bilgi göndererek kullanarak Last-Modified dosyayı doğrular. Kaynak sunucusu bu tarihi en son kaynağın Last-Modified üst bilgisi ile karşılaştırır. Kaynak belirtilen süreden bu yana değiştirilmediyse, sunucu yanıtında 304 (Değiştirilmedi) durum kodunu döndürür. Kaynak değiştirildiyse, sunucu durum kodu 200 (Tamam) ve güncelleştirilmiş kaynağı döndürür.

Hangi dosyaların önbelleğe alınabileceğini belirleme

Tüm kaynaklar önbelleğe alınamıyor. Aşağıdaki tabloda, HTTP yanıtının türüne göre hangi kaynakların önbelleğe alınabileceği gösterilmektedir. Bu koşulların tümünü karşılamayen HTTP yanıtları ile teslim edilen kaynaklar önbelleğe alınamaz. Yalnızca Edgio'dan Azure CDN Premium için bu koşulların bazılarını özelleştirmek için kural altyapısını kullanabilirsiniz.

Microsoft'tan Azure Content Delivery Network Edgio'dan Azure Content Delivery Network
HTTP durum kodu 200, 203, 206, 300, 301, 410, 416 200
HTTP yöntemleri GET, HEAD GET
Dosya boyutu sınırları 300 GB 300 GB

Microsoft önbelleğinden Azure CDN Standard'ın bir kaynak üzerinde çalışması için kaynak sunucusunun tüm HEAD ve GET HTTP isteklerini desteklemesi ve içerik uzunluğu değerlerinin varlık için tüm HEAD ve GET HTTP yanıtları için aynı olması gerekir. HEAD isteği için, kaynak sunucunun HEAD isteğini desteklemesi ve get isteği almış gibi aynı üst bilgilerle yanıt vermesi gerekir.

Varsayılan önbelleğe alma davranışı

Aşağıdaki tabloda Azure Content Delivery Network ürünleri için varsayılan önbelleğe alma davranışı ve bunların iyileştirmeleri açıklanmaktadır.

Microsoft: Genel web teslimi Edgio: Genel web teslimatı Edgio: DSA
Onur kaynağı Yes Evet Hayır
içerik teslim ağı önbellek süresi İki gün Yedi gün Hiçbiri

Onur kaynağı: Kaynak sunucudan HTTP yanıtında varsa desteklenen önbellek yönergesi üst bilgilerine saygı gösterilip verilmeyeceğini belirtir.

CDN önbelleği süresi: Kaynağın Azure içerik teslim ağında önbelleğe alındığı süreyi belirtir. Ancak, Onur kaynağı Evet ise ve kaynak sunucudan gelen HTTP yanıtı önbellek yönergesi üst bilgisini Expires veya Cache-Control: max-ageiçeriyorsa, Azure Content Delivery Network bunun yerine üst bilgi tarafından belirtilen süre değerini kullanır.

Not

Azure Content Delivery Network, nesnenin önbellekte depolanacağına ilişkin en az süre garantisi sunmaz. İçeriğin daha sık istenen içeriklere yer açması istenmediğinde, önbelleğe alınan içerikler, süresi dolmadan önce içerik teslim ağı önbelleğinden çıkarılabilir.

Sonraki adımlar

  • Önbelleğe alma kuralları aracılığıyla içerik teslim ağındaki varsayılan önbelleğe alma davranışını özelleştirmeyi ve geçersiz kılmayı öğrenmek için bkz . Önbelleğe alma kurallarıyla Azure Content Delivery Network önbelleğe alma davranışını denetleme.
  • Önbelleğe alma davranışını denetlemek için sorgu dizelerini kullanmayı öğrenmek için bkz . Sorgu dizeleriyle Azure Content Delivery Network önbelleğe alma davranışını denetleme.