Kullanıcıya özel içeriğin yanlışlıkla cache'lenmesini nasıl önlerim?
Kısa cevap
Caching Rules statik dosya yollarıyla sınırlı tutulur; oturum çerezi, Authorization başlığı ya da /account gibi kişisel yollar taşıyan istekler koşulların olumsuz hâlleriyle kuralın dışında bırakılır. Ignore Response Headers ve Ignore HTTP Method Standards kapalı kalmalıdır; böylece Kurum Servisinin önbellek başlıkları dikkate alınır ve yalnızca GET ve HEAD istekleri önbelleğe alınır. Kişiye özel içerik bilinçli olarak önbelleğe alınacaksa Dynamic Caching ile anahtara kullanıcıyı ayıran bir değer (ör. oturum çerezi) eklenir.
Sorun: Bir Kullanıcının Sayfası Başka Kullanıcıya Gösterilebilir
Kullanıcıya özel bir yanıt (hesap sayfası, sepet, kişisel API yanıtı) önbelleğe alınırsa aynı adresi isteyen başka bir kullanıcıya o yanıt sunulabilir. Bu hem gizlilik ihlali hem de hatalı içerik demektir; önbellek yalnızca herkese aynı olan içerikle sınırlanmalıdır.
Çözüm: İki Yöntem
| Durumunuz | Uygun yöntem |
|---|---|
| Kişisel içerik önbelleğe hiç alınmamalı | Yöntem 1: Dar kural ve olumsuz koşullar |
| Kişiye özel içerik bilinçli olarak önbelleğe alınacak | Yöntem 2: Dynamic caching |
Yöntem 1: Dar Kural ve Olumsuz Koşullar Önerilen
- Nasıl çalışır Kural yalnızca statik dosyaları kapsar; oturum çerezi,
Authorizationbaşlığı ya da kişisel yol taşıyan istekler olumsuz koşullarla dışarıda kalır. - Nerede açılırLoad Balancer → Conditions · Load Balancer → Profiles → Cache
- Gereksinim Ignore Response Headers ve Ignore HTTP Method Standards kapalı (varsayılan); Kurum Servisi kişisel sayfalarda
Cache-Control: privateya dano-storegöndermeli - vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Conditions → Add; Criteria = User Cookie Name, çerez adı (ör. SESSIONID), eşleştirme Is present → Add.
Gerekirse aynı yolla Criteria = HTTP Header (Authorization, Is present) ve Criteria = Path (/account, Start) koşulları oluşturulur.
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 statik uzantı koşulu korunur; bütün yolları kapsayan geniş koşullar eklenmez (operasyonel en iyi uygulamalar). Oluşturulan koşulların olumsuz hâlleri aynı gruba and ile eklenir (Bir koşulu olumsuz ("şu değilse") olarak kullanabilir miyim?).
Ignore Response Headers ve Ignore HTTP Method Standards anahtarlarının kapalı olduğu kontrol edilir.
Yeni profilde Add, düzenlemede Save tıklanır. Profil zaten vService'e atanmışsa değişiklik açık bağlantılar kopmadan uygulanır ve önbellekteki kopyalar silinir; böylece daha önce saklanmış kişisel kopyalar da temizlenir.
Yeni profil oluşturulduysa Load Balancer → Load Balancer vService List → vService → Edit → Details → Cache kutusunda profil seçilir.
Save tıklanır; değişiklik açık bağlantılar kopmadan uygulanır. Cluster'da varsayılan auto-sync ile eş cihaza da gönderilir; Manual Sync Mode açıksa Synchronize ile gönderilir.
Doğrulama
Oturum çereziyle aynı adres iki kez istenir: curl -s -o /dev/null -D - -H "Cookie: SESSIONID=A" https://www.example.com/logo.png
İki istekte de TRCACHE: MISSAynı adres çerezsiz iki kez istenir.
TRCACHE: MISS, sonra TRCACHE: HITYöntem 2: Dynamic Caching
- Nasıl çalışır Önbellek anahtarına oturum çerezi gibi kullanıcıyı ayıran bir değer eklenir; her kullanıcı kendi kopyasını alır.
- Nerede açılırLoad Balancer → Profiles → Cache → Dynamic Caching
- Gereksinim Kişisel içerik yalnızca aynı kullanıcıya tekrar sunulabilecek nitelikte olmalı; kullanıcı sayısı kadar kopya bellekte tutulur
- vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Profiles → Cache ekranında yeni profil için Add, mevcut profil için satıra sağ tık → Edit kullanılır.
Dynamic Caching anahtarı açılır; Key listesi görünür.
Key listesine Request Cookie Content Smart Variable'ı oturum çerezinin adıyla (ör. SESSIONID) eklenir (Dynamic Caching nedir, ne zaman kullanılmalı?).
Yeni profilde Add, düzenlemede Save tıklanır. Profil zaten vService'e atanmışsa değişiklik açık bağlantılar kopmadan uygulanır.
Yeni profil oluşturulduysa vService Edit ile açılır ve Details → Cache kutusunda profil seçilir.
Save tıklanır. 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 önce -H "Cookie: SESSIONID=A", sonra -H "Cookie: SESSIONID=B" ile istenir.
Her çerez değeri ilk istekte MISS alırSık Yapılan Hatalar
- Ignore response headers'ı isabet oranı için açmak.
Set-Cookietaşıyan ya da kişisel yanıtlar başka kullanıcılara sunulabilir (önerilen değerler). - Dynamic caching'te istemci IP'sini anahtar yapmak. NAT arkasındaki kullanıcılar aynı IP'yi paylaşır; oturum çerezi tercih edilir.
- Tarayıcı önbelleğini TR7 önbelleğiyle karıştırmak. Yanıtlara eklenen
Cache-Controlbaşlıkları tarayıcıyı yönetir; TR7'nin önbelleği Cache profiliyle yönetilir.
Dokümantasyonda nasıl yapılır
