Tarayıcı önbelleği aynı görsel, stil veya script dosyasının her ziyarette yeniden aktarılmasını azaltabilir. Ancak bütün yanıtları aynı süreyle saklamak doğru değildir. Bir şirket logosu ile kullanıcı bakiyesi farklı gizlilik ve güncellik gerektirir. Cache-Control başlığı, istemci ve aradaki önbellekler için yanıtın nasıl ele alınacağını belirtir. Optimizasyon planına dosya sürümlemesini ve özel içerik sınırlarını birlikte ekleyin; hız artışı yanlış veya başka kullanıcıya ait veri göstermemelidir.
Başlamadan önce
Statik dosyaların, genel HTML’nin ve oturumlu yanıtların listesini çıkarın. Apache, nginx, uygulama ve CDN katmanlarından hangisinin başlık eklediğini belirleyin. Önceki ayarları ve birkaç gerçek HTTP yanıtını saklayın. Yayın sırasında dosya adı veya sürüm parametresinin nasıl değişeceğini planlayın. Test için iki ayrı sentetik kullanıcı oturumu kullanın; gerçek müşterilerin hesap bilgilerini ekran görüntüsü veya ortak test kaydına taşımayın.
Uygulama adımları
- Varlıkları içerikten ayırın
CSS, JavaScript, font ve görseller değişim sıklığına göre cache edilebilir. Oturumlu panel, sepet, fatura veya hesap bilgisi içeren HTML’yi aynı gruba almayın. Dosya uzantısı tek başına her zaman yeterli ayrım değildir; dinamik bir görsel de özel içerik taşıyabilir.
- Başlıkların anlamını doğru seçin
No-store saklamamayı ister; no-cache ise saklanan yanıtın kullanılmadan önce yeniden doğrulanmasıyla ilgilidir. Bu adlar birbirinin yerine düşünülmemelidir. Public ve private kararını, yanıtın paylaşımlı önbelleğe uygunluğuna göre verin. Hassas hesap yanıtlarında uygulamanın güvenli politikasını koruyun.
- Dosya sürümleme planını uygulayın
Uzun süre saklanacak dosyaları değiştiğinde farklı ad veya sürüm adresiyle yayımlayın. İçerik özeti içeren adlar bu amaç için kullanılabilir. Eski HTML’nin ihtiyaç duyduğu varlığı hemen kaldırmak yerine geçiş dönemini düşünün; kullanıcı eski sayfayla yeni script arasında uyumsuzluk yaşamamalıdır.
- Katman çakışmasını kontrol edin
Uygulama no-store gönderirken CDN kuralı her şeyi cache ediyorsa beklenen koruma bozulabilir. Sunucu ve CDN başlıklarını birlikte inceleyin. Aynı Cache-Control değerinin iki farklı yerde çelişkili üretilmesi durumunda politikanın tek, anlaşılır bir son yanıta dönüşmesini sağlayın.
- Güncelleme senaryosunu test edin
Bir stil dosyasını değiştirip yeni sürüm adresini HTML’ye ekleyin. Yeni dosyanın indirildiğini, eski dosyanın gerektiği durumda erişilebilir kaldığını görün. Sadece kendi tarayıcınızda cache temizlemek diğer ziyaretçilerin sorununun çözüldüğünü göstermez; normal kullanıcı akışını ayrıca deneyin.
- Özel yanıt izolasyonunu sınayın
İki test kullanıcısıyla müşteri panelini sırayla açın ve kullanıcı adı, bakiye, sepet ile destek verilerinin karışmadığını kontrol edin. Oturumsuz isteğin özel içeriğe ulaşamadığını doğrulayın. Cache politikası kimlik doğrulamanın yerine geçmez; ikisi aynı doğrulama planında test edilmelidir.
Sonucu doğrulama
Ağ panelinde ilk ve tekrar isteklerinin kaynaklarını, Cache-Control ve doğrulama başlıklarını karşılaştırın. Sürümü değişen dosyanın yeni baytlarını görmek gerekir. Genel HTML güncellenirken fiyat veya makale içeriğinin eski kalıp kalmadığını inceleyin. Özel sayfalarda paylaşımlı hit yanıtı oluşmamalıdır. Tarayıcı, CDN ve sunucu cache temizliğini ayrı not ederek hangi katmanın sonucu değiştirdiğini anlaşılır tutun.
Sık karşılaşılan sorunlar
Yeni tasarım bazı ziyaretçilerde eski görünüyorsa varlık sürümünün değişmemesi olasıdır. CDN kuralı query parametresini cache anahtarından çıkarıyorsa sürüm parametresi beklediğiniz etkiyi vermeyebilir. CSS 304 yanıtı doğru olabilir; tarayıcı eski dosyanın hâlâ geçerli olduğunu doğrulamaktadır. Kullanıcı bilgisi karışıyorsa öncelik cache izolasyonu olmalıdır. Bütün cache’i kapatmak geçici teşhis sağlayabilir, fakat uzun vadeli doğru içerik politikası gerekir.
Uygulama örneği
Yeni tema hs-site.css?v=2 ile yayımlanıyorsa HTML’nin bu adresi kullandığını ve CDN’nin sürümleri ayırdığını görün. Daha sonra aynı adrese farklı içerik yüklemek uzun TTL altında eski görünüm yaratabilir. Buna karşılık /musteri-paneli yanıtını hızlandırmak için public ve uzun max-age eklemek kullanıcıya özel bilgilerin saklanmasına yol açabilir; varlık ve hesap yanıtlarını ayırın.
Sık sorulan sorular
No-cache ile no-store aynı mı?
Hayır. No-cache yeniden doğrulama gerektirir; no-store yanıtın saklanmamasını ister. Hangi politikanın uygun olduğunu içerik türüne göre belirleyin. Sadece isimden hareket ederek hassas yanıtın güvenli olduğunu varsaymayın.
Dosya adını değiştirmek tek başına yeterli mi?
HTML gerçekten yeni dosyaya bağlanıyorsa yararlı olur. Eski HTML önbelleği veya CDN kuralı farklı sonuç üretebilir. Yayın kontrolünde dosyanın adresini, içeriğini ve onu kullanan HTML’yi birlikte doğrulayın.
İlgili rehberler
Süreç özeti
İşlem ve doğrulama sırası
| Adım | Kontrol |
|---|---|
| 1 | İçerik türünü ayır |
| 2 | Başlık politikası seç |
| 3 | Dosyayı sürümle |
| 4 | İki oturumla doğrula |
