Önbellek hızlandırırken eski görseli neden gösterir?

Yeni kapağı yükledin ama bazı ziyaretçiler hâlâ eskisini görüyor. Bu her zaman yüklemenin başarısız olduğu anlamına gelmez. Tarayıcı veya aradaki bir önbellek, daha önce aldığı yanıtı yeniden kullanıyor olabilir. Hız kazanmak için saklanan içerik, doğru güncelleme düzeni olmazsa kafa karıştırır.
Benim için önbelleğin zor tarafı hız kazandırması değil, değişen içeriği doğru zamanda göstermesi. Ziyaretçi yeni kapağı beklerken eski görseli görüyorsa yalnızca hızlı yüklenme yeterli değil. Bu yüzden performansla güncelliği birbirine rakip değil, birlikte tasarlanması gereken iki ihtiyaç olarak görüyorum.
Temel fikir
HTTP önbelleği yanıtların hangi koşullarda saklanıp yeniden kullanılacağını başlıklarla yönetir. no-cache, hiçbir şey saklanmasın demek değildir; yeniden kullanmadan önce doğrulama gerektirir. no-store ise saklamayı engellemeye yönelik farklı bir talimattır. Bu iki kavramı karıştırmamak gerekir.
Bir örnek üzerinden
Portföy kapaklarında sürümlenmiş dosya adları kullanmayı düşün: kapak-v2.jpg gibi yeni bir adres, eski dosyayla karışmayı azaltır. Uygulama üretim süreçleri bunu içerik hash’iyle otomatik yapabilir. HTML ile uzun ömürlü görsellerin aynı önbellek politikasına sahip olması gerekmeyebilir.
| Terim | Anlam |
|---|---|
| no-cache | Yeniden kullanmadan önce doğrulama |
| no-store | Yanıtı saklamama talimatı |
| Sürümlü dosya adı | Yeni içeriğe yeni adres |
Nereden başlamalı?
Kontrol sırasında hem yeni ziyaretçiyi hem geri dönen ziyaretçiyi dene. Sadece tarayıcıyı sert yenileyerek test etmek gerçek davranışı saklayabilir. Hassas, kişiye özel içeriklerde ise hızdan önce doğru saklama sınırlarını belirle.
Benim yaklaşımım
Bir kapak değiştiğinde önce dosyanın nerede eski kaldığını ayırırım: tarayıcı, dağıtım katmanı veya kullanılan dosya adı. Sorunun kaynağını bilmeden bütün önbelleği kaldırmak istemem. Güncellenen dosyaya açık bir sürüm kimliği vermek, benim için rastgele yenileme tuşuna güvenmekten daha anlaşılır bir yaklaşım.


