Uygulama güncellemesinden sonra eski içerik gelmeye devam ediyor; ne yapmalıyım?
Kısa cevap
Önce eski içeriğin TR7 önbelleğinden mi tarayıcıdan mı geldiği anlaşılır: yanıtta TRCACHE: HIT varsa kaynak TR7'dir; başlık hiç yoksa vService'te Cache profili etkin değildir ya da yanıt tarayıcının kendi önbelleğinden gelmiştir. TR7'de önbelleği tek tek boşaltan bir işlem yoktur; kopya Cache Timeout dolunca yenilenir. Hemen yenilemek için vService Reload edilir (kısa kesinti olur) ya da Cache profilinde bir değişiklik kaydedilir; ikisi de önbelleği boşaltır. Kalıcı çözüm sık değişen içerikte kısa Cache timeout ve sürüm bilgisi taşıyan dosya adlarıdır.
Sorun: Güncelleme Yayında Ama Kullanıcılar Eski Dosyayı Görüyor
Uygulamaya yeni CSS, görsel ya da script yüklendikten sonra kullanıcılar eski sürümü görmeye devam edebilir. Eski kopya TR7'nin önbelleğinde ya da kullanıcının tarayıcısında olabilir. Önce kaynak belirlenir: curl -s -o /dev/null -D - https://www.example.com/app.css yanıtında TRCACHE: HIT varsa kopya TR7'dedir; TRCACHE: MISS görünüyorsa ya da başlık hiç yoksa eski kopya TR7'de değildir; eski sürüm kullanıcının tarayıcısındadır ve tarayıcıda sert yenileme gerekir (Bir yanıtın cache'ten geldiğini nasıl anlarım (Cached(HIT) Header Name, varsayılan değeri TRCACHE)?). Hiçbir şey yapılmazsa TR7'deki kopya Cache timeout (varsayılan 1 saat) sonunda kendiliğinden yenilenir.
Çözüm: Üç Yöntem
| Durumunuz | Uygun yöntem |
|---|---|
| Önbelleği hemen boşaltmak; kısa kesinti kabul edilebilir | Yöntem 1: vService Reload |
| Önbelleği bağlantılar kopmadan boşaltmak | Yöntem 2: Cache profilinde değişiklik kaydetmek |
| Sorunun bir sonraki yayında tekrarlanmaması | Yöntem 3: Kısa süre, sürümlü adlar ve dar kapsam |
Yöntem 1: vService Reload
- Nasıl çalışır vService yeniden başlatılır ve bellekteki önbellek tamamen boşalır.
- Nerede açılırLoad Balancer → Load Balancer vService List → vService'e sağ tık → Reload
- Gereksinim Açık bağlantıların kopacağı kısa kesintinin kabul edilebildiği zaman; vService devre dışıyken Reload pasiftir
- vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Load Balancer vService List ekranı açılır.
vService satırına sağ tıklanıp Reload seçilir (sağ tık menüsü). Aynı komut vService önizlemesindeki ⋮ menüsünde de bulunur.
Doğrulama
Reload sonrası güncellenen dosya curl -s -o /dev/null -D - https://www.example.com/app.css ile istenir.
TRCACHE: MISS ve yeni içerikYöntem 2: Cache Profilinde Değişiklik Kaydetmek Önerilen
- Nasıl çalışır Cache profilinde yapılan değişiklik kaydedildiğinde önbellek boşalır; değişiklik açık bağlantılar kopmadan uygulanır.
- Nerede açılırLoad Balancer → Profiles → Cache → sağ tık → Edit
- Gereksinim Profil birden çok vService'te kullanılıyorsa hepsinin önbelleği boşalır; önizlemedeki Used in sekmesi önceden kontrol edilir
- vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Profiles → Cache ekranında vService'in kullandığı profilin satırına sağ tıklanıp Edit seçilir. vService Default profile kullanıyorsa bu yol yoktur; Yöntem 1 kullanılır.
Gereken değişiklik yapılır; ör. Cache Timeout içeriğin değişme sıklığına göre kısaltılır.
Save tıklanır; önbellek boşalır (ö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
Kayıttan sonra güncellenen dosya curl -s -o /dev/null -D - https://www.example.com/app.css ile istenir.
TRCACHE: MISS ve yeni içerikYöntem 3: Kısa Süre, Sürümlü Adlar ve Dar Kapsam
- Nasıl çalışır Sık değişen içerik kısa süre önbellekte kalır ya da hiç önbelleğe alınmaz; sürüm bilgisi değişen dosya yeni bir adres olduğu için hemen Kurum Servisinden alınır.
- Nerede açılırLoad Balancer → Profiles → Cache · uygulamanın yayın süreci
- Gereksinim
?v=biçimi için profilde Ignore query kapalı olmalı - vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Profiles → Cache ekranında profil satırına sağ tıklanıp Edit seçilir; vService Default profile kullanıyorsa Add ile yeni profil oluşturulur (nasıl eklenir).
Cache Timeout içeriğin değişme sıklığına göre kısaltılır; birim seconds, minutes ya da hours seçilir.
Gerekirse sık değişen yolları tanımlayan koşulun olumsuz hâli Caching Rules alanına and ile eklenir (Hangi içerikler cache'lenir; cache kurallarını nasıl belirlerim?).
Düzenlemede Save, yeni profilde Add 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.
Uygulamanın yayın sürecinde dosya adları sürüm bilgisi taşır (app.v2.css) ya da adrese ?v=2 eklenir. ?v= biçimi profilde Ignore Query kapalıyken çalışır (Query string ve Host Header cache anahtarına dahil mi; bunu değiştirebilir miyim?).
Doğrulama
Yeni sürümlü adres curl -s -o /dev/null -D - "https://www.example.com/app.css?v=2" ile istenir.
İlk istekte TRCACHE: MISS ve yeni içerikSık Yapılan Hatalar
- Kaynağı ayırt etmeden işlem yapmak. curl yanıtında
TRCACHE: HITyoksa eski kopya TR7'de değildir; TR7'de yapılan işlem sonucu değiştirmez. - Reload'u yoğun saatte yapmak. Reload vService'i yeniden başlatır ve açık bağlantılar kopar; bakım penceresinde yapılır.
?v=ile Ignore query'yi birlikte kullanmak. Ignore query açıkken sorgu dizesi anahtara girmez; sürüm parametresi önbelleği yenilemez.
Dokümantasyonda nasıl yapılır
