Önbellek sona erme kuralları, kaynakların CDN sunucu kenar noktalarında (POP) ne kadar süreyle önbellekte tutulacağını belirler. Bu sayede içerik güncelliği, erişim performansı ve kaynaktan veri çekme maliyetleri arasında denge kurabilirsiniz. Bu konuda önbellek kurallarının çalışma mantığı, bunların nasıl yapılandırılacağı ve doğrulanacağı ile önbellekleme sorunlarının nasıl giderileceği açıklanır; ayrıca üretim ortamları için en iyi uygulamalar sunulur.
Çalışma mantığı
Bir istek bir CDN sunucu kenar noktasına (POP) ulaştığında sistem, önbellekteki kopyayı mı sunacağını yoksa en güncel içeriği kök sunucudan mu çekeceğine karar verir. Aşağıdaki adımlar öncelik sırasına göre değerlendirilir; düşük numara daha yüksek önceliği gösterir.
Kök sunucunun önbelleğe almama yönergeleri — Kök sunucu
Pragma: no-cache,Cache-Control: no-cache,Cache-Control: no-storeveyaCache-Control: max-age=0yanıtını döndürüyorsa CDN kaynağı önbelleğe almaz. Bu tür kaynakları zorla önbelleğe almak için önbellek sona erme kuralını yapılandırırken Ignore Origin No-Cache Header seçeneğini işaretleyin.Konsolda yapılandırılan önbellek kuralları — CDN konsolunda yapılandırılan önbellek kuralları önceliklidir; ancak 1. adımda açıklandığı gibi kök sunucu açıkça önbelleğe almama yönergesi gönderiyorsa bu durum geçerli değildir. Bir isteğe birden fazla konsol önbellek kuralı uyuyorsa ağırlığı daha yüksek olan kural geçerli olur; ağırlıkları eşit olan kurallar oluşturma tarihine göre çözülür. Bir istek bir önbellek kuralıyla eşleştiğinde başka kural değerlendirilmez.
Kök sunucu yanıt başlıkları — İstek herhangi bir CDN konsol kuralıyla eşleşmiyorsa veya eşleşen kuralda Honor Origin TTL etkinse CDN kök sunucunun HTTP yanıt başlıklarını dikkate alır. Başlık önceliği, en yüksekte en düşüğe doğru şu şekildedir:
Cache-Control>Expires>Last-Modified>ETag.Varsayılan önbelleğe almama ilkesi — İstek CDN konsolundaki herhangi bir önbellek kuralıyla eşleşmiyor ve kök sunucu
Cache-Controlgibi önbellek yanıt başlıkları döndürmüyorsa CDN önbelleğe almama ilkesi uygular.CDN DCDN önbellek ilkelerini yalnızca kök sunucunun 200, 203, 206, 300, 301, 308 veya 410 durum kodunu döndürdüğü isteklere uygular. 404 gibi durum kodlarının sona erme süresini yapılandırmak için Cache Settings > Status Code TTL sayfasını kullanın.
Aşağıdaki tabloda, bir isteğe birden fazla konsol önbellek kuralı uyduğunda uygulanan öncelik mantığı açıklanır:
|
|
|
|
|
|
|
|
|
|
|
|
Aşağıdaki tabloda her bir kök sunucu yanıt başlığının nasıl işlendiği açıklanır:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Önbellek kuralı eşleştirme mantığı
CDN önbellek sona erme kuralları farklı eşleştirme davranışlarına sahip iki kural türünü destekler:
Directory: Yol ön eki eşleştirmesi kullanır. Örneğin,
/static/yapılandırmak o dizindeki tüm kaynaklarla (/static/image/1.jpgve/static/css/style.cssgibi) eşleşir./yapılandırmak tüm yollarla eşleşir. Dizin yolu eğik çizgi (/) ile başlamalıdır. Her kural yalnızca bir dizini destekler.-
File Extension: Uzantıda tam eşleşme kullanır. Uzantıları nokta olmadan girin ve birden çok uzantıyı virgülle ayırın (örneğin,
jpg,css,js). Uzantılar yalnızca alfasayısal karakterleri destekler; belirli uzantı türleri üzerinde kısıtlama yoktur. Aşağıdaki türlerin tümü yapılandırılabilir:Yaygın statik kaynak uzantıları:
jpg,png,gif,css,js,htmlYazı tipi dosyası uzantıları:
ttf,otf,woff,woff2,eotDinamik sayfa uzantıları:
php,aspx,jspDiğer herhangi bir alfasayısal uzantı
Önbellek kuralı eşleştirmesiyle ilgili aşağıdaki hususlara dikkat edin:
Birden çok önbellek kuralı aynı istekle eşleştiğinde (örneğin, bir dizin kuralı ve bir dosya uzantısı kuralı) daha yüksek Weight değerine sahip kural önceliklidir. Ağırlıkları eşit olan kurallar oluşturma tarihine göre çözülür (önce oluşturulan kural kazanır). Ayrıntılar için Çalışma mantığı bölümüne bakın.
Bir kural koşulunu (Kural Motorunda yapılandırılır) bir önbellek kuralıyla ilişkilendirirseniz birden çok koşul VE mantığıyla çalışır; eşleşme için istek tüm koşulları karşılamalıdır.
Tüm dinamik uzantılar için genel bir önbelleğe almama kuralı (örneğin,
aspx) belirlerseniz bunun önbelleğe almak istediğiniz statik kaynakları etkilemediğinden emin olun. Yazı tipi dosyalarını önbelleğe almak içinttf,otf,woff,woff2,eotgibi uzantılarla ayrılmış bir kural ekleyin.
Yöntem
Hızlandırılmış bir etki alanı adı oluştururken seçtiğiniz iş türü (Görüntü ve Küçük Dosya, Büyük Dosya İndirme veya Talep Üzerine Video/Ses Akışı gibi) belirli dosya uzantıları veya yolları için sabit önbellek süreleri ön tanımlamaz. Gerçek önbellekleme davranışı konsolda yapılandırdığınız önbellek kuralları tarafından belirlenir. Etki alanı adını oluşturduktan sonra kaynak türlerinize ve güncellenme sıklığınıza göre önbellek kuralları yapılandırın.
Konsol (önerilen)
Alibaba Cloud CDN konsolunda Domain Names sayfasına gidin ve hedef etki alanı adının yanındaki Manage öğesine tıklayın.
Cache > Cache Expiration sayfasında bir önbellek kuralı yapılandırmak için Create Rule öğesine tıklayın. Aşağıdaki tabloda parametreler açıklanır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Sunucu kenar noktalarında (POP) kaynakların önbellekte kalma süresi. Maksimum süre üç yıldır. Nadiren güncellenen statik kaynaklar (görüntüler ve yükleyiciler gibi): Süreyi 1 ay veya daha uzun olarak ayarlayın. Sık güncellenen statik kaynaklar (JS ve CSS dosyaları gibi): 1 ila 7 gün gibi daha kısa bir süre ayarlayın. Dinamik içerik (PHP ve JSP sayfaları gibi): Süreyi 0 saniye (önbellek yok) olarak ayarlayın. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kuralın önceliği. Geçerli değerler: 1 ila 99. Daha yüksek değer daha yüksek öncelik anlamına gelir. Önerilen: Ayrıntılı kontrol sağlamak için belirli yollar veya dosya uzantıları için yüksek ağırlık, kök dizin ( |
|
|
|
|
|
Her kural türünün bir istekle nasıl eşleştiğine ilişkin ayrıntılar için Önbellek kuralı eşleştirme mantığı bölümüne bakın.
API
Birden çok etki alanı adını toplu olarak yapılandırmak için BatchSetCdnDomainConfig API işlemini çağırın. Diğer özellikler için parametrelerin nasıl yapılandırılacağı hakkında daha fazla bilgi için Domain name configuration functions bölümüne bakın.
Yeni veya değiştirilen önbellek kuralları yalnızca değişiklikten sonra önbelleğe alınan kaynaklar için geçerlidir. Zaten önbellekte bulunan kaynaklar, sona erene kadar önceki önbellek ilkesini kullanmaya devam eder.
Kural değişikliklerini hemen uygulayın
Yeni kuralları ağ genelinde hemen uygulamak için mevcut önbelleği manuel olarak temizlemeniz gerekir. Bir kuralı değiştirirseniz mevcut önbelleği Purge and prefetch resources özelliğini kullanarak temizleyin. Yeni bir kural eklerseniz kaynağı prefetch resource özelliğini kullanarak ön belleğe alın.
Doğrulama
Yapılandırmayı tamamladıktan sonra curl komutunu veya tarayıcı geliştirici araçlarını kullanarak bir kaynağın HTTP yanıt başlıklarını inceleyin ve önbellekleme beklendiği gibi çalışıyor mu doğrulayın. Bir kural değişikliğinin ne zaman etkili olacağı hakkında ayrıntılı bilgi için Kural değişikliklerini hemen uygulayın bölümüne bakın.
Yöntem 1: curl komutunu kullanın
Yapılandırmayı test etmek için terminalinizde aşağıdaki komutu çalıştırın.
curl -I "https://your.domain.com/path/to/file.jpg"
Yanıt başlıklarında X-Cache değerini kontrol edin: HIT değeri isteğin CDN önbelleğinden sunulduğunu, MISS değeri ise önbellek isabetinin olmadığını ve kökten veri çekildiğini gösterir. Her başlıkla ilgili ayrıntılar için Temel yanıt başlıklarını yorumlama bölümüne bakın.
Yöntem 2: Tarayıcı geliştirici araçlarını kullanın
Tarayıcınızın geliştirici araçlarını (F12) açın ve Network sekmesine gidin. Kaynak URL'sine erişin, isteği seçin ve kaynağın CDN önbelleğinden sunulup sunulmadığını belirlemek için Response Headers bölümündeki X-Cache başlığını kontrol edin.
Temel yanıt başlıklarını yorumlama
X-Cache
İsteğin CDN önbelleğine isabet edip etmediğini gösterir.
HIT: İstek önbelleğe isabet etti.MISS: İstek önbelleği ıskaladı ve kaynak kök sunucudan alındı.
Cache-Control
Follow POP Cache Policy seçeneğini etkinleştirdiğinizde CDN POP'taki etkili önbellek ilkesini (örneğin, max-age=3600) istemciye döndürür.
X-Swift-SaveTime
Kaynağın istemcinin doğrudan eriştiği L1 katmanındaki CDN POP'a ilk girdiği zaman.
Değer GMT saat biçimini kullanır. Örnek:
Sat, 19 Apr 2025 08:58:31 GMT.
Ali-Swift-Global-Savetime
Kaynağın bir CDN POP'a ilk girdiği zaman. Sitenin önbellek mimarisine bağlı olarak bu bir L2 POP veya başka bir önbellek katmanı olabilir.
Değer bir Unix zaman damgasıdır. Örneğin,
1745053111değeri2025-04-19 16:58:31anlamına gelir.
X-Swift-CacheTime
CDN POP'unda kaynağın yapılandırılmış önbellek süresi (saniye cinsinden). Bu değer bir garanti değil, üst sınırdır. Ali-Swift-Global-Savetime bir Unix zaman damgası, X-Swift-SaveTime ise bir GMT saat değeridir.
X-Swift-CacheTime=Ali-Swift-Global-Savetime+ CDN'de yapılandırılan önbellek sona erme süresi -X-Swift-SaveTime.-
X-Swift-CacheTimedeğeri yapılandırılan önbellek sona erme süresine tam olarak eşit olmayabilir. Aşağıdaki durumlar ortaya çıkabilir:Yapılandırılan önbellek sona erme süresine eşittir (örneğin, 3.600 saniye).
Yapılandırılan önbellek sona erme süresinden biraz daha kısadır. Örneğin, yapılandırılan sona erme süresi 300 saniyedir ancak
X-Swift-CacheTimedeğeri 295 saniyedir. Bu durum, bir L1 POP'un kaynağı bir L2 POP'tan çekerken yüksek gecikme yaşamasından veya L1 ve L2 POP'ların saatlerinin senkronize olmamasından kaynaklanabilir.Negatiftir çünkü önbellek sona erme süresi değiştirilmiştir ve istemci kaynağa eriştiğinde L1 POP'taki önbellek sona ermişken L2 POP'taki önbellek henüz sona ermemiştir. Örneğin, sona erme süresi 3.600 saniyeden 300 saniyeye düşürülmüştür. İstemci ilk erişimden 600 saniye sonra kaynağa tekrar erişirse yanıt
X-Swift-CacheTime: -300içerir. Yeni sona erme süresinin etkili olması için önbelleği temizleyin.
Bir POP'ta bir kaynağa nadiren erişiliyorsa önbellek süresi dolmadan daha sık erişilen kaynaklar tarafından önbellekten çıkarılabilir. Bu nedenle gerçek önbellek süresi yapılandırılan değerden daha kısa olabilir.
En iyi uygulamalar
Sürümlü dosya adları kullanın (önerilen) —
style.cssgibi statik bir kaynağı güncellediğinizde sürüm veya karma içeren yeni bir dosya adı (style-v2.cssveyastyle-a1b2c3d.cssgibi) kullanın ve HTML'deki referansı güncelleyin. Bu yöntem, kullanıcıların manuel bir CDN önbellek temizlemesine gerek kalmadan en güncel içeriği anında almasını sağlar ve önbelleğe alınmış içeriği güncellemek için önerilen yoldur.Tarayıcı önbelleğini etkili şekilde kullanın — CDN üzerine yapılan yinelenen istekleri azaltmak, yükleme hızını artırmak ve CDN trafiğinden tasarruf etmek için Follow POP Cache Policy seçeneğini etkinleştirin.
Aşırı kısa önbellek sürelerinden kaçının — Kısa önbellek süresi CDN hizmetinin kök sunucudan sık sık veri çekmesine neden olur; bu durum hızlandırmanın avantajlarını ortadan kaldırır ve kök sunucunuzun trafik ile maliyetlerini artırır.
Uzun önbellek sürelerine karşı dikkatli olun — Uzun önbellek süresi istemcilerin güncel içerik güncellemelerini zamanında almasını engelleyebilir. Sık güncellenmesi gereken içerikler için önbelleği temizlediğinizden veya sürümlü dosya adları kullandığınızdan emin olun.
Oyun endüstrisi ve küçük dosya senaryoları — Oyun endüstrisindeki küçük dosya kaynakları (yapılandırma dosyaları ve varlık paketleri gibi) nadiren güncelleniyorsa (örneğin, haftalık veya iki haftada bir) önbellek sona erme süresini 15 gün olarak ayarlayın veya gerçek kaynak güncelleme döngüsüyle eşleştirin. Bu yaklaşım, güncelleme hızı ile hızlandırma performansı arasında denge kurar. Çok kısa önbellek süresi sık kök sunucu erişimine yol açarak hızlandırma faydalarını azaltır; çok uzun önbellek süresi ise oyunculara eski içerik sunulmasına neden olabilir. (Önerilen) İçerik güncellendiğinde önbelleği proaktif olarak yenilemek için purge and prefetch özelliğini kullanın.
robots.txt ve sitemap.xml — Bu dosyalar arama motoru taramasını doğrudan etkiler. Arama motorlarının güncellemeleri geciktirmemesi için bu dosyaların önbellek süresini ayrı olarak yapılandırın; böylece bunların çok uzun süre önbelleğe alınmasına neden olacak geniş kapsamlı bir uzantı kuralı tarafından eşleştirilmesi engellenir. (Önerilen) Yalnızca bu iki dosyayı hedeflemek için tür olarak Directory seçin, Object alanına belirli dosya yolunu (örneğin,
/robots.txt) girin ve ardından geniş kapsamlı uzantı kurallarını geçersiz kılmak için yüksek bir ağırlık ayarlayın. Dosya uzantısına göre yapılandırmayı tercih ediyorsanıztxt,xmluzantıları için önbellek süresini 1 saat ila 1 gün arasında ayarlayın. Uzantı kuralı bu uzantılara sahip her kaynağa uygulanır; yalnızca robots.txt ve sitemap.xml dosyalarına değil. Sık güncellenen site haritaları için önbellek süresini en fazla 1 saat olarak ayarlayın.
Sorun giderme
Önbellekleme etkili olmuyorsa, önbellek isabeti eksikse, önbellek isabet oranı düşükse veya içerik güncellenmiyorsa sorunları nasıl gidereceğinizi öğrenmek için Troubleshoot cache issues bölümüne bakın.
Ek: HTTP önbellek kontrol mekanizmaları
Bu bölüm protokol arka plan bilgisi sağlar. Sunucu kenar noktalarında (POP) karşılık gelen önbellek davranışı için Çalışma mantığı bölümüne bakın. HTTP protokolü önbellek kontrolü için üç tür başlık kullanır:
-
Sona erme zamanı doğrulaması
Bir istemci sunucudan bir kaynak istediğinde taraflar kaynak için bir sona erme zamanında anlaşır. Bu zamandan önce önbellekteki kopya geçerli kabul edilir. Bu zamandan sonra önbellekteki kopya geçersiz hale gelir.
HTTP'de önbellek sona ermesini kontrol etmek için yaygın olarak kullanılan başlıklar şunlardır:
Başlık
Protokol sürümü
Açıklama
Örnek
Tür
Pragma
HTTP/1.0
İçeriğin önbelleğe alınıp alınmayacağını belirtir. Değeri genellikle no-cache olup dosyanın önbelleğe alınmaması gerektiği anlamına gelir. Genellikle yalnızca HTTP/1.0 protokolünü destekleyen sunucularla uyumluluk sağlamak için kullanılır.Pragma: no-cache
Request/Response
Expires
HTTP/1.0
Expires yanıt başlığı önbelleğe alınmış içeriğin ne zaman eskidiğini belirten tarih ve saati belirtir. 0 gibi geçersiz bir tarih kullanılırsa kaynak zaten sona ermiş demektir.Expires: Wed, 21 Oct 2022 07:28:00 GMT
Response
Cache-Control
HTTP/1.1
Cache-Control yanıt başlığı çeşitli yönergeler aracılığıyla esnek önbellek kontrolü sağlar ve tarayıcılar gibi modern istemcilerin bu amaçla kullandığı birincil başlıktır.
Aşağıdaki üç örnek dosyanın önbelleğe alınmaması gerektiğini belirtir:Cache-Control: no-cache;Cache-Control: no-store;Cache-Control: max-age=0. 1 saatlik önbellek geçerlilik süresi örneği:Cache-Control: max-age=3600.
Request/Response -
Kaynak etiketi doğrulaması
Sunucu ilk yanıtında bir kaynak etiketi (ETag gibi) içerir. İstemci aynı kaynağı tekrar istediğinde bu etiketi doğrulama amacıyla sunucuya geri gönderir. Kaynak değişmediyse sunucu 304 HTTP durum koduyla yanıt verir ve istemci önbellekteki kopyayı kullanabilir. Kaynak değiştiyse sunucu yeni içeriği gönderir.
HTTP'de önbellek sürümlerini kontrol etmek için yaygın olarak kullanılan başlıklar şunlardır:
Başlık
Protokol sürümü
Açıklama
Örnek
Tür
Last-Modified
HTTP/1.0
Kaynağın en son değiştirilme zamanını gösterir.Last-Modified: Wed, 21 Oct 2015 07:28:00 GMT
Response
ETag
HTTP/1.1
Bir kaynağın belirli bir sürümü için benzersiz bir tanımlayıcı sağlar. ETag'ler karşılaştırılarak kaynağın değişip değişmediği belirlenebilir. Kaynak değişmediyse kök sunucunun tam yanıt göndermesine gerek kalmaz.ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"
Response -
İçerik görüşmesi
Önbellekleme yazılımı diskte önbelleğe alınan nesneleri indekslemek için bir anahtar kelime kullanır. HTTP/1.0'da kaynak URL'si anahtar kelime olarak kullanılır. Ancak aynı URL'de bir kaynağın farklı temsilleri bulunabilir. Bunları ayırt etmek için istemciden Accept-Language ve Accept-Charset başlıkları gibi daha fazla bilgi gerekir. İçerik görüşmesini desteklemek için HTTP/1.1 yanıt mesajında Vary başlığını tanıttı. Bu başlık, içerik görüşmesi için hangi istek başlıklarının gerekli olduğunu listeler.
İçerik görüşmesi genellikle farklı önbelleğe alınmış kopyaları ayırt etmek için HTTP Vary başlığını kullanır; bu sayede farklı istemciler aynı kaynağı isterken farklı önbelleğe alınmış kopyalar alabilir:
|
|
|
|
|
|
|
|
|
|
|
|