Hangi içerikler cache'lenir; cache kurallarını nasıl belirlerim?
Kısa cevap
Cache profilindeki Caching Rules koşulunu sağlayan GET ve HEAD istekleri (Ignore HTTP Method Standards), Kurum Servisinin yanıtı önbelleğe almaya izin vermesi (Ignore Response Headers) ve yanıtın Max. Object Size (MB) sınırını aşmaması durumunda önbelleğe alınır. Varsayılan kural, yolu yaygın statik dosya uzantılarıyla (.css, .png, .jpg, .woff gibi) biten istekleri kapsar; .js, .html ve .json bu listede yoktur. Kural, profildeki Caching rules alanında koşullar (Conditions) seçilerek ve and/or ile birleştirilerek değiştirilir; koşulsuz kural hiçbir içeriği önbelleğe almaz.
Sorun: Önbelleğe Alınacak İçerik Uygulamaya Göre Değişiyor
Her uygulamanın hangi içeriğinin güvenle önbelleğe alınabileceği farklıdır: bir sitede JavaScript dosyaları da önbelleğe alınmak istenirken kullanıcıya özel sayfaların dışarıda kalması gerekir. Varsayılan kuralın uzantı listesi:
.txt .bmp .jpeg .pdf .ps .ttf .jpg .svg .webp .css .svgz .woff .csv .gif .mid .png .swf .woff2 .doc .midi .ppt .tif .xls .docx .pptx .tiff .xlsx .mp4 .flv .mov .wmv .avi .ogg .mkv .mpg
Çözüm: İki Yöntem
| Durumunuz | Uygun yöntem |
|---|---|
| Kuralı arayüzden değiştirmek | Yöntem 1: Caching rules alanı |
| Komut satırından | Yöntem 2: WEB-CLI |
Yöntem 1: Caching Rules Alanı Önerilen
- Nasıl çalışır Kural koşulları sağlandığında istek önbellekten karşılanır ya da yanıt önbelleğe yazılır.
- Nerede açılırLoad Balancer → Profiles → Cache → Caching Rules
- Gereksinim Kuralda kullanılacak koşul; listede yoksa önce oluşturulur
- vService tipi HTTP
Adım adım yapılandırma
Kuralda kullanılacak koşul yoksa Load Balancer → Conditions → Add ile oluşturulur; ör. Criteria = Path, eşleştirme seçiminde End, değer .js → Add (koşul ekleme).
Load Balancer → Profiles → Cache ekranında yeni profil için Add (nasıl eklenir), mevcut profil için satıra sağ tık → Edit kullanılır.
Caching Rules alanında varsayılan uzantı koşulunun yanına .js koşulu or ile eklenir. + ile en fazla 3 grup eklenir; gruplar ve grup içi koşullar and/or ile birleştirilir; koşulların olumsuz hâlleri de listede bulunur (otomatik NOT koşulu). Listede yalnızca istek aşamasındaki koşullar bulunur.
Yeni profilde Add, düzenlemede Save tıklanır. Profil başka vService'lerde de kullanılıyorsa değişiklik hepsine yansır; önizlemedeki Used in sekmesi önceden kontrol edilir.
Load Balancer → Load Balancer vService List ekranında HTTP vService seçilip Edit tıklanır; Details panelinde Cache kutusu işaretlenir ve profil seçilir (vService'e nasıl eklenir).
Save tıklanır. Değişiklik açık bağlantılar kopmadan uygulanır; önbellekteki kopyalar silinir (önerilen değerler). Cluster'da varsayılan auto-sync ile eş cihaza da gönderilir; Manual Sync Mode açıksa Synchronize ile gönderilir.
Doğrulama
Aynı adres curl -s -o /dev/null -D - https://www.example.com/app.js ile iki kez istenir.
TRCACHE: MISS, sonra TRCACHE: HITvService panosunun HTTP Frontend sekmesinde Frontend Cache grafiğine bakılır. Cache Lookups artıp Cache Hits artmıyorsa kural eşleşiyor ama yanıt saklanmıyordur (yöntem, yanıt başlıkları ya da boyut).
Cache Hits artarYöntem 2: WEB-CLI
- Nasıl çalışır Koşul ve kural komut satırından yazılır; kural, koşulları kimlikleriyle birleştiren bir ifade alır.
- Nerede açılır TR7 WEB-CLI →
lb condition·lb cache·lb service - Gereksinim WEB-CLI erişimi; her kural için
--cacheRules.N.idzorunludur - vService tipi HTTP
Adım adım yapılandırma
lb condition add criteria path query .js --content_placement end --caseInsensitive true --name js-dosyalari--cacheRules.N.cond koşul adını değil kimliğini alır. Kimlik listeden okunur:
lb condition listVarsayılan uzantı koşulunun kimliği isCommonFileExtension'dır; .js koşulu buna or ile eklenir:
lb cache add name statik-js --cacheRules.0.id statik --cacheRules.0.cond "isCommonFileExtension or <js-koşul-kimliği>"lb service update id <vService> --cache statik-jsDoğrulama
Aynı adres curl -s -o /dev/null -D - https://www.example.com/app.js ile iki kez istenir.
TRCACHE: MISS, sonra TRCACHE: HITSık Yapılan Hatalar
- Kuralın koşulunu kaldırmak. Koşulsuz bir kuralla hiçbir içerik önbelleğe alınmaz; arayüz bu durumda uyarı vermez.
.jsve.htmldosyalarının varsayılan olarak önbelleğe alındığını sanmak. Bu uzantılar varsayılan listede yoktur; gerekiyorsa koşulla eklenir.- Yanıt koşullarıyla kural kurmaya çalışmak. Durum kodu ya da yanıt boyutu gibi yanıt aşaması koşulları Caching rules'ta seçilemez.
- Ignore seçeneklerini isabet oranı için açmak. Ignore Response Headers açıldığında Kurum Servisinin önbelleği engelleyen başlıkları dikkate alınmaz.
- Kullanıcıya özel sayfaları kapsayan geniş kural yazmak. Kişisel içeriğin dışarıda tutulması için: Kullanıcıya özel içeriğin yanlışlıkla cache'lenmesini nasıl önlerim?
Dokümantasyonda nasıl yapılır
