Özel önbellek anahtarı kuralları; HTTP isteğinin URI, istek parametreleri, HTTP üstbilgileri veya özel değişkenler gibi belirli kısımlarından önbellek anahtarları oluşturur. Aynı kaynak için yapılan istekleri tek bir önbellek anahtarında birleştiren bu özellik, önbellek isabet oranlarını artırır, kök sunucudan veri çekme sayısını azaltır ve yanıt süreleri ile bant genişliği tüketimini düşürür.
Özellik karşılaştırması ve seçimi
Özel önbellek anahtarı ile Parametreleri yoksay arasındaki çakışma: Parametre filtreleme ve özel önbellek anahtarını aynı anda yapılandırırsanız parametre filtreleme geçersiz hale gelir.
-
Özel önbellek anahtarı özelliği daha hassas kontrol sunduğundan parametre filtrelemeye göre tercih edilir. Aşağıdaki tabloda bu iki özellik karşılaştırılmaktadır.
Kullanım senaryosu
Parametre filtreleme
Özel önbellek anahtarı
Önbellek anahtarındaki tüm istek parametrelerini yoksay
Ignore Parameters seçeneğini Yes olarak ayarlayın ve Retain Specified Parameters alanını boş bırakın.
Bir istek parametresi kuralı ekleyin. Action değerini Reserve olarak, Parameter Name değerini iseexample-argumentgibi var olmayan bir parametre adı olarak belirtin.
Önbellek anahtarında yalnızcakey1istek parametresini tut
Ignore Parameters seçeneğini Yes olarak ayarlayın ve Retain Specified Parameters değerinikey1olarak belirtin.
Bir istek parametresi kuralı ekleyin. Action değerini Reserve olarak, Parameter Name değerinikey1olarak belirtin.
Önbellek anahtarından yalnızcakey1istek parametresini kaldır
Remove Specified Parameters değerinikey1olarak belirtin.
Bir istek parametresi kuralı ekleyin. Action değerini Delete olarak, Parameter Name değerinikey1olarak belirtin. Kök sunucu parametrelerini yeniden yazma: Özel önbellek anahtarı özelliği yalnızca önbellek anahtarını değiştirir; kök sunucudan veri çekme isteği için kullanılan URL'yi değiştirmez. Kök sunucudan veri çekme isteği, istemci isteğiyle aynı kalır. Kök sunucunuza gönderilen istek parametrelerini değiştirmek için Rewrite origin parameters özelliğini kullanın.
Önbelleği temizleme: Özel bir önbellek anahtarı yapılandırdıktan sonra URL'ye göre temizleme görevi önbelleğe alınmış içerikle eşleşmeyebilir. Temizleme işleminin başarılı olmasını sağlamak için kurallarınız tarafından oluşturulan son önbellek anahtarını temizleme hedefi olarak kullanın.
Kullanım senaryoları
Önbellek anahtarı, CDN uç noktasında (POP) önbelleğe alınan bir dosya için benzersiz bir tanımlayıcıdır. Her önbelleğe alınmış dosyanın karşılık gelen bir önbellek anahtarı vardır. Varsayılan olarak önbellek anahtarı, parametreler dahil olmak üzere istemcinin istek URL'sidir. Özel önbellek anahtarı özelliği, kök sunucudan veri çekme işleminde kullanılan URL'yi değiştirmez; yalnızca önbellek anahtarını değiştirir. Kök sunucudan veri çekme isteği, istemcinin orijinal isteğiyle aynı kalır.
CDN statik kaynakları hızlandırmak için tasarlanmıştır ve dinamik API hızlandırmayı desteklemez. Özel önbellek anahtarı özelliği, URL parametrelerini standartlaştırmak veya istemciler arasında ayrım yapmak gibi statik kaynaklar için önbellekleme stratejilerini optimize eder; dinamik API önbellekleme senaryoları için uygun değildir. Dinamik içerik hızlandırma için Edge Security Acceleration (ESA) hizmetini değerlendirebilirsiniz.
Kullanım senaryosu 1: İstekleri birleştirme
Farklı istemci isteklerinde URL genellikle farklı parametreler içerir. Birden fazla istek aynı dosyayı hedeflese bile CDN uç noktaları, farklı URL parametrelerine sahip istekleri ayrı dosyalar olarak değerlendirir. Bu durum birden fazla önbellek kopyasına ve ek kök sunucu isteğine yol açar.
Bu istekler için önbellek anahtarını birleştirmek amacıyla özel önbellek anahtarı kurallarını kullanarak kök sunucudan veri çekme oranını düşürebilirsiniz.
Kullanım senaryosu 2: İstekleri ayırt etme
İstemci istekleri aynı URL'yi paylaştığında CDN bunları aynı dosya için yapılan istekler olarak değerlendirir. Ancak farklı istemci sistemlerini tanımlayan HTTP üstbilgisindeki client alanına bağlı olarak farklı içerik sunmanız gerekebilir.
Bu durumda özel bir önbellek anahtarı kuralı kullanarak client üstbilgisinin değerini önbellek anahtarına ekleyin. Böylece her istemci türü için ayrı bir önbellek anahtarı oluşturulur.
Yordam
CDN konsolu üzerinde oturum açın.
Domain Names sayfasında hedef alan adını bulun ve Actions sütunundaki Manage seçeneğine tıklayın.
Sol gezinme bölmesinde Cache seçeneğini belirleyin.
-
Custom Cache Key sekmesinde aşağıdaki parametreleri ayarlamak için Create Rule seçeneğine tıklayın:
Rule Condition
Bir kural koşulu, bir yapılandırmanın belirli bir istek için geçerli olup olmadığını belirlemek amacıyla çeşitli parametrelere dayalı olarak istekleri tanımlar. Bir kural kural koşulu kullanıyorsa yürütme sırasını özelliğin öncelik ayarı değil, kural koşulunun önceliği belirler.
Do not use: Özel önbellek anahtarı, kural koşulu olmadan tüm isteklere uygulanır.
Kural koşulu ekleme veya düzenleme: Rules Engine içinde yönetin. Daha fazla bilgi için bkz. Rule Conditions ve Rules Engine.
URIs
Bir istemci isteği URI'si yapılandırmadaki Source URI ile eşleştiğinde sistem bunu yapılandırılan Final URI ile değiştirerek önbellek anahtarını oluşturur. Birden çok URI değiştirme ilkesi yapılandırabilirsiniz. İlkeler yukarıdan aşağıya doğru sırayla eşleştirilir. Bir Source URI eşleştiğinde sistem ilgili Final URI uygular ve sonraki ilkelerin eşleştirilmesini durdurur.
Source URI: Eğik çizgi (
/) ile başlayan vehttp://ön ekini veya alan adını içermeyen bir URI. PCRE düzenli ifadeleri desteklenir.Final URI: Eğik çizgi (
/) ile başlayan vehttp://ön ekini veya alan adını içermeyen bir URI.
Request Parameter
İşlemler orijinal istek URL'sinin parametreleri üzerinde gerçekleştirilir. Add, Delete, Modify ve Reserve işlemlerini uygulayabilirsiniz. Sonuç önbellek anahtarına eklenir. Birden çok işlem yapılandırırsanız işlemler yukarıdan aşağıya doğru sırayla yürütülür.
Add: Önbellek anahtarına yeni bir istek parametresi ekler. Örneğin orijinal URL
http://image.example.com/cat.jpgise vetype=jpgparametresini eklerseniz önbellek anahtarıhttp://image.example.com/cat.jpg?type=jpgolur.Delete: Önbellek anahtarı oluşturulurken belirtilen parametreyi orijinal istek URL'sinden kaldırır. Örneğin orijinal URL
http://image.example.com/cat.jpg?type=jpgise vetypeparametresini silerseniz önbellek anahtarıhttp://image.example.com/cat.jpgolur.Modify: Önbellek anahtarı oluşturulurken orijinal istek URL'sindeki belirtilen parametrenin değerini değiştirir. Örneğin orijinal URL
http://image.example.com/cat.jpg?type=jpgise ve parametreyitype=pngolarak değiştirirseniz önbellek anahtarıhttp://image.example.com/cat.jpg?type=pngolur.Reserve: Önbellek anahtarı oluşturulurken orijinal istek URL'sinden yalnızca belirtilen parametreleri tutar. Diğer tüm parametreler kaldırılır. Örneğin orijinal URL
http://image.example.com/cat.jpg?type=jpg&path=imageise vetypeparametresini korursanız önbellek anahtarıhttp://image.example.com/cat.jpg?type=jpgolur.
HTTP Headers
İstemcinin orijinal isteğinden belirtilen HTTP üstbilgilerinin değerlerini önbellek anahtarına ekler. Birden çok üstbilgi adını boşlukla ayırarak belirtebilirsiniz. Değerler üstbilgilerin belirtilme sırasına göre eklenir. Örneğin orijinal URL
http://image.example.com/cat.jpgise ve istemci isteğipath:imageHTTP üstbilgisini taşıyorsa HTTP Headers alanındapathbelirtmek önbellek anahtarınıhttp://image.example.com/cat.jpgimageyapar.Custom Variables
Önbellekleme esnekliğini artırmak için oluşturulan önbellek anahtarına özel değişken değerleri ekler. Bir özel değişken aşağıdaki parametrelerden oluşur:
Variable name: Değişken için özel bir ad.
-
Source: İstemci isteğinde taşınan bir alan değeri. Aşağıdaki kaynak türleri kullanılabilir:
Query String Parameter: İstek URL'sindeki sorgu dizesi.
Request Header: İstemci isteğinde taşınan bir istek üstbilgisi.
Path: İstek URL'sindeki kaynak yolu.
Scheme: İstek URL'sinin kullandığı protokol. HTTP ve HTTPS desteklenir.
-
Source field: Yalnızca Query String Parameter, Request Header ve Request Cookie kaynak türleri için gereklidir. Aşağıdakilerden birini belirtin:
Sorgu dizesindeki belirtilen bir parametrenin adı.
Belirtilen bir istek üstbilgisinin adı.
Match rule: Kaynak alanı değerindeki belirli bir dizeyle eşleşen düzenli ifade.
Variable expression: Nihai değişken değerini oluşturur. Sabit dizeleri ve ilk parantezli grup tarafından yakalanan içeriği referans alan
$1gibi yakalama grubu referanslarını destekler.
OK seçeneğine tıklayın.
Yapılandırma örnekleri
URIs
http://aliyundoc.com/a/b/image.jpg ve http://aliyundoc.com/a/b/c/image.jpg için yapılan istekler aynı dosya için yapılan istekler olarak değerlendirilir. Bu dosyanın önbellek anahtarı http://aliyundoc.com/c/image.jpg olur. Aşağıdaki URI yeniden yazma kurallarını yapılandırın: Source URI /a/b değerini Final URI /c değerine, Source URI /a/b/c değerini ise Final URI /c değerine yeniden yazın. Yeniden yazma kuralları eklemek için + Add Source URI seçeneğine, mevcut kuralları kaldırmak için Delete seçeneğine tıklayın.
Request Parameter
http://aliyundoc.com/a/b/image.jpg?delete_par=1&modify_par=1 adresine yapılan bir istemci isteği şu şekilde işlenir: add_par=1 eklenir, delete_par silinir ve modify_par değeri 2 olarak değiştirilir. Elde edilen önbellek anahtarı http://aliyundoc.com/a/b/image.jpg?modify_par=2&add_par=1 olur.
Birden çok işlem aynı istek parametresini hedefliyorsa öncelik sırası şu şekildedir: Add > Delete > Reserve > Modify.
Delete eylemi yalnızca tek bir parametre adını destekler. Birden çok parametreyi silmek için her parametre için ayrı bir Delete kuralı eklemek üzere + Add Parameter Operation seçeneğine tıklayın.
HTTP Headers
Bir istemci isteğinden gelen User-Agent ve Accept-Language üstbilgilerinin değerleri önbellek anahtarına eklenir. Örneğin http://aliyundoc.com/a/b/image.jpg adresine yapılan bir istekte User-Agent=Mozilla/5.0 (Linux; X11) ve Accept-Language=en üstbilgileri varsa önbellek anahtarı http://aliyundoc.com/a/b/image.jpgMozilla/5.0(Linux;X11)en olur. HTTP Headers metin kutusuna User-Agent ve Accept-Language gibi dahil etmek istediğiniz istek üstbilgisi alanlarını girin.
Custom Variables
Örnek 1
Değişken adı language, kaynak Request Header, kaynak alanı Accept-Language, eşleşme kuralı ([%w]+),([%w]+) ve değişken ifadesi $1aa olsun. Özel değişkeni şu şekilde yapılandırın: Variable name değerini language olarak ayarlayın, Source olarak Request Header seçin, Source field değerini Accept-Language olarak girin, Match rule değerini ([%w]+),([%w]+) olarak girin ve Variable expression değerini $1aa olarak girin.
Bir istemci Accept-Language=en,ch HTTP üstbilgisiyle http://aliyundoc.com/a/b/image.jpg adresini ister. Eşleşme kuralı en değerini yakalar ve bunu değişken ifadesindeki $1 değerine atar. Değişken ifadesi ayrıca aa ekler; böylece language takma adına sahip değişken değeri enaa olur. Bu değer URL'ye eklenerek nihai önbellek anahtarı http://aliyundoc.com/a/b/image.jpgenaa şeklinde oluşturulur.
Değişken ifadesindeki $n değeri, eşleşme kuralındaki n. parantezli grup tarafından yakalanan içeriği ifade eder. Örneğin Accept-Language=en,ch ve ([%w]+),([%w]+) eşleşme kuralı için $1=en ve $2=ch olur.
Örnek 2
Değişken adı expired, kaynak Request Cookie, kaynak alanı a, eşleşme kuralı [%w]+:(.*) ve değişken ifadesi $1 olsun. Özel değişkeni şu şekilde yapılandırın:
Variable name:
expiredSource: Request Cookie
Source field:
aMatch rule:
[%w]+:(.*)Variable expression:
$1
Bir istemci Cookie a=expired_time:12635187 çereziyle http://aliyundoc.com/a/b/image.jpg adresini ister. Eşleşme kuralı 12635187 değerini yakalar ve bunu değişken ifadesindeki $1 değerine atar; takma ad expired olur. Bu değer URL'ye eklenerek nihai önbellek anahtarı http://aliyundoc.com/a/b/image.jpg12635187 şeklinde oluşturulur.
Örnek 3
Bu örnekte bir URI kuralı ile bir özel değişken birleştirilmektedir.
URI:
URI'si /abc/.*/abc ile eşleşen tüm istekleri /abc altında birleştirin. Source URI /abc/.*/abc ve Final URI /abc olur.
Custom Variables:
Değişken adı testname, kaynak Path, eşleşme kuralı /abc/xyz/(.*) ve değişken ifadesi $1 olsun. Şu şekilde yapılandırın: Variable name değerini testname olarak ayarlayın, Source değerini Path olarak belirleyin, Match rule değerini /abc/xyz/(.*) olarak ayarlayın ve Variable expression değerini $1 olarak ayarlayın.
Bir istemci http://aliyundoc.com/abc/xyz/abc/image.jpg adresini ister. URI yapılandırmasına göre önbellek anahtarı http://aliyundoc.com/abc/image.jpg olarak yeniden yazılır. Ardından özel değişken yapılandırmasına göre orijinal istek yolu /abc/xyz/(.*) ile eşleşir. Bu noktada $1 değeri abc/image.jpg olarak atanır ve önbellek anahtarına eklenir; nihai önbellek anahtarı http://aliyundoc.com/abc/image.jpgabc/image.jpg olur. Bu örnek, daha karmaşık önbellekleme mantığını uygulamak için kuralları nasıl birleştirebileceğinizi göstermektedir.
Önbellek anahtarı için bir özel değişken eşleşmezse değişken ifadesi $1 önbellek anahtarına eklenmez.
Örnek 4
Bu örnekte mobil ve PC istemcilerinden gelen istekler için farklı önbellek anahtarları oluşturmak amacıyla bir kural koşulu ile bir özel değişken birleştirilmektedir.
Mobile kural koşulu:
User-Agent üstbilgisi aşağıdaki dizelerden herhangi birini içerir: *Mobile*,*Android*,*iPhone*,*ipad*.
PC kural koşulu:
User-Agent üstbilgisi aşağıdaki dizelerden hiçbirini içermez: *Mobile*,*Android*,*iPhone*,*ipad*.
Mobile özel önbellek anahtarı:
Rule Condition için Mobile seçin. Custom Variables bölümünde Variable Name değerini Mobile, Source değerini Path, Matching Rule değerini / ve Variable Expression değerini +mobile olarak ayarlayın.
PC özel önbellek anahtarı:
Rule Condition için PC seçin. Custom Variables bölümünde Variable Name değerini PC, Source değerini Path, Matching Rule değerini / ve Variable Expression değerini +pc olarak ayarlayın.
Bir istemci http://aliyundoc.com/image.jpg adresine istek yaptığında istek User-Agent değerine göre Mobile veya PC özel önbellek anahtarı kuralıyla eşleşir. Mobil istemciler için nihai önbellek anahtarı http://aliyundoc.com/image.jpg+mobile, PC istemcileri için nihai önbellek anahtarı ise http://aliyundoc.com/image.jpg+pc olur.