Önbelleğin en zor sorusu: bu yanıt kime ait?
TTL belirlemeden önce yanıtın sahibini belirlemek gerekir. Ortak içerik, kişisel veri ve form güvenliği aynı önbellek kararını paylaşmaz.
Bir cümle seçip kopyala: kaynak adresi alıntıya eklenir. Seçim yoksa yazının adresi kopyalanır.
Bu yazının haritası · 5 bölüm
Bir sayfayı hızlandırmak için her yanıtı ortak önbelleğe koymak cazip görünür. Fakat aynı adreste bir ziyaretçi herkese açık metni, diğeri hesabına özel bilgiyi görüyorsa hız kararı bir veri sınırına dönüşür. Benim ilk sorum kaç dakika saklanacağı değil, bu yanıtı kimlerin paylaşabileceğidir.
Yanıtları sahipliğine göre ayırmak
Bir görsel dosyası, herkese açık makale ve oturumlu hesap sayfası aynı davranışı gerektirmez. İlgili HTTP yönergelerini bu ayrımı yaptıktan sonra seçerim. no-cache saklamayı bütünüyle yasaklamaz; tekrar kullanmadan önce doğrulama ister. no-store ise yanıtın saklanmamasını ister. İsim benzerliği, kararların aynı olduğu anlamına gelmez.
Anahtar kadar geçersiz kılma da önemlidir
Bir yazıyı düzenlediğimde önceki sürümün ne zaman kaybolacağını bilmek isterim. İçerik sürümü, yayın olayı veya süreye bağlı yaklaşım kullanılabilir; seçimi kullanım biçimi belirler. Dil, yetki veya başka girdiler yanıtı değiştiriyorsa anahtar tasarımı bunları hesaba katmalıdır. Çok sayıda varyant üretmek de ölçüsüz bir çözüm olabilir.
Bir kişiselleştirme örneği
Herkese açık bir yazıya 'Merhaba, Ayşe' satırı eklemek küçük bir tasarım değişikliğidir. Ortak HTML önbelleği açısından ise yeni bir sınır getirir. Kişisel parçayı ayrı üretmek ya da bütün yanıtın önbellek politikasını değiştirmek gerekir. Sadece görsel olarak küçük olduğu için teknik etkisini küçük saymam.
Form tokenını unutmak
CSRF tokenı içeren HTML'yi ziyaretçiler arasında paylaşmak, oturumla ilişkili bir değeri yanlış yere taşır. Formu ayrı yanıtla üretmek veya ortak önbellekten çıkarmak gibi seçenekler vardır. Bu sitenin mevcut PHP yanıtları no-store kullanır; burada anlatılan yaklaşım, ortak önbelleğin uygulanmış olduğu iddiası değildir.
Kararın kabul ölçütü
A kullanıcısının yanıtı B kullanıcısına ulaşmamalı. İçerik düzenlendikten sonra kabul edilen eski kalma süresi belli olmalı. Çıkış yaptıktan sonra özel veri tekrar gösterilmemeli. Bu sorular yanıtlanmadan yalnızca yanıt süresindeki düşüşe bakarak optimizasyonu başarılı saymam.
Kaynak: Resmî kaynak ↗