Önbelleğe alma nasıl işler?
Önemli
Microsoft tarafından sunulan Azure CDN Standard (klasik) 30 Eylül 2027'de kullanımdan kaldırılacaktır. Hizmet kesintisini önlemek için, 30 Eylül 2027'ye kadar Azure CDN Standard'ı Microsoft (klasik) profillerinden Azure Front Door Standard veya Premium katmanına geçirmeniz önemlidir. Daha fazla bilgi için bkz . Microsoft'tan Azure CDN Standard (klasik) kullanımdan kaldırma.
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, verileri yerel olarak depolama işlemidir, böylece bu veriler için gelecekteki isteklere daha hızlı erişilebilir. 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 şekline tam sayı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 deCache-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:
- Edgio'dan Azure CDN Standard/Premium ve Microsoft'tan Azure CDN Standard tüm
Cache-Control
yönergeleri destekler. - Edgio'dan Azure CDN Standard/Premium ve Microsoft'tan Azure CDN Standard, RFC 7234 - Köprü Metni Aktarım Protokolü'nde (HTTP/1.1) Önbellek Denetimi yönergeleri için önbelleğe alma davranışlarını dikkate alır: Önbelleğe alma (ietf.org).
- Edgio'dan Azure CDN Standard/Premium ve Microsoft'tan Azure CDN Standard tüm
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 ETag
Last-Modified
doğrulayıcıları desteklerken , Microsoft'tan Azure CDN Standard yalnızca Last-Modified
destekler.
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-Modified
daha 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 kullananETag
birIf-None-Match
dosyayı doğrular. Örneğin,If-None-Match: "17f0ddd99ed5bbe4edffdd6496d7131f"
. Sunucunun sürümü listedeki birETag
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ırETag
. - 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
. - 8 MB'tan büyük içerikler için kaynak arka uç sunucuları varlık başına tutarlı
Last-Modified
zaman damgaları tutmalıdır. Arka uç sunucularından tutarsızLast-Modified
sürelerin döndürülmesi, doğrulayıcı uyuşmazlığı hatalarına neden olur ve HTTP 5XX hatalarına neden olur. Azure Depolama, çoğaltmalar arasında tutarlıLast-Modified
zaman damgalarını desteklemeyebilir ve bu da benzer doğrulayıcı uyuşmazlığı hatalarına neden olabilir. - Önbellek, istekte tarih ve saat içeren bir
If-Modified-Since
üst bilgi göndererek kullanarakLast-Modified
dosyayı doğrular. Kaynak sunucusu bu tarihi en son kaynağınLast-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.
Not
Yetkilendirme üst bilgisi içeren istekler önbelleğe alınmaz.
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-age
iç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.