Amaç ne?
İstemci tarafında önbellekleme adı verilen iyi bilinen bir teknik zaten var. HTML5 yerel depolaması bu durumda ne önbelleğe almanın eksik olduğunu getirir?
JavaScript kod parçalarını dinamik olarak yüklemesi gereken garip bir uygulamanız olabilir, böylece önbelleği etkin bir şekilde kullanamazsınız, ancak bu oldukça nadir bir durumdur.
Ayrıca, başka bir şeyin farkında olun. Tarayıcıların önbellek için belirli politikaları vardır ve çoğu tarayıcı önbelleği iyi yönetmede oldukça iyidir (yalnızca eski içeriği kaldırarak vb.). Ev yapımı önbelleğinizi uygulayarak, tarayıcıların doğru yönetmesini önlersiniz. Sadece kendi başına eleştirilebilir, aynı zamanda yakında veya sonra sizi de incitir. Örnek: Bir web uygulamasının kullanıcıları hataları bildirirken genellikle önbelleklerini temizlemelerini isteyerek cevap verirsiniz. Durumunuzda ne isteyeceğinizden emin değilim, çünkü önbelleği temizlemek web uygulamanızla ilgili sorunları hiçbir zaman çözmez.
İlk düzenlemenize yanıt olarak (ikinci düzenlemeniz konu dışı):
Tarayıcı önbelleğinin farkındayım, hala bazı başlık erişim kontrolü olacak
Tarayıcı önbelleğe alma konusunda bazı anlayışınız yok gibi görünüyor. Bu nedenle , kendi ev yapımı önbelleğe alma mekanizmanızı uygulamaya başlamadan önce, ilk önce nasıl çalıştığını anlamak önemlidir . Kendi tekerlekinizi sadece mevcut tekerlekleri yeterince anlayınca ve kullanmamak için iyi bir nedeniniz olduğunda yeniden icat edin. "Tekerleği yeniden icat etme ve pişman etme DEĞİL" sorusuna verdiğim cevabın 1. maddesine bakınız .
HTTP üzerinden bazı veriler sağlarken, önbellekle ilgili birkaç başlık belirleyebilirsiniz:
Last-Modified
İçeriğin ne zaman değiştirildiğini belirtir.
Expires
içeriğin değiştiğini tarayıcının sunucuya ne zaman sorması gerektiğini belirtir .
Bu iki başlık tarayıcının şunları yapmasına izin verir:
- İçeriği tekrar tekrar indirmekten kaçının. Eğer
Last-Modified
geçen aya ayarlanır ve içerik zaten birkaç saat önce bugün indirildi, tekrar indirmeniz gerek yoktur.
- Dosyanın en son değiştirildiği tarihi sorgulamaktan kaçının. Eğer
Expires
bir önbellek varlığın 5 Mayıs olan inci , herhangi GET isteği gerekmez 2014 ne 2011 yılında ne de 2012 ya da 2013 yılında, önbellek kadar güncel olduğunu biliyoruz çünkü.
İkincisi CDN'ler için esastır. Google sunulduğunda JQuery yığın taşması bir ziyaretçiye veya cdn.sstatic.net
yığın taşması tarafından kullanılan görüntüleri veya stil vermektedir, yeni bir sürümü her zaman için sorguya tarayıcıları istemiyoruz. Bunun yerine, bu dosyaları bir kez sunuyorlar, son kullanma tarihini yeterince uzun bir şeye ayarlayın ve hepsi bu.
İşte örneğin Stack Overflow ana sayfasına geldiğimde neler olup bittiğini gösteren bir ekran görüntüsü:
Sunacak 15 dosya var. Fakat tüm bu 304 Not Modified
tepkiler nerede ? Yalnızca değişen üç içerik isteğiniz var. Her şey için, tarayıcı önbelleğe alınmış sürümü herhangi bir sunucuya herhangi bir talepte bulunmadan kullanır .
Sonuç olarak, kendi önbellek mekanizmanızı uygulamadan önce iki kez düşünmeniz ve özellikle bunun yararlı olabileceği iyi bir senaryo bulmanız gerekir . Cevabımın başında söylediğim gibi, sadece bir tane bulabilirim: Onları kullanmak için JavaScript parçalarını sunmakta olduğunuz OMG eval()
,. Ancak bu durumda, her ikisinden de daha iyi yaklaşımların olduğuna eminim:
- Standart önbellek tekniklerini kullanarak daha etkili, veya
- Bakımı daha kolaydır.