Javascript dosyanızda bir değişiklik yaptınız ama sitenizi daha önce ziyaret etmiş olan kullanıcılar bu değişikliği/düzenlemeyi göremiyorlar çünkü internet sitenize daha önce giriş yaptıklarında kullandıkları tarayıcı, js javascript dosyalarınızı önbelleğe almış. Her bir kullanıcınıza ulaşıp ctrl+f5 tuşlarına basarak sitenin önbelleklerinin kullanılmadan yeni halinin yüklenmesini söyleme şansınız da olmadığına göre ne yapacağız? olası senaryolar:
1. Kullanıcının önbelleğini sileceğiz (yanlış, bu mümkün değil)
2. Sitemizdeki statik dosyaların önbelleğe alınması özelliğini iptal edeceğiz (yanlış, site çok yavaş açılır)
3. js dosyasının adını her güncellemede değiştireceğiz ki önbellekteki versiyon yerine yeni versiyonu kullansın (yanlış, nereye kadar?)
4. önbellekteki js dosyasını güncelleyeceğiz (olabilir)
Şimdi ilk çözümden bahsedeceğim, sitemizde referans verdiğimiz js dosyasının devamına query ekleyerek tarayıcı tarafından bu dosyanın yeni bir dosya olarak algılanması ve bu haliyle versiyon da tutularak önbellekte saklanması sağlanır.
<script src='scripts.js?versiyon=2'></script>
Peki her güncellemeden sonra versiyonu da güncellemek zorunda mıyız? Bu sorunun yanıtı evet. Peki sürekli olarak otomatik değişen bir sayı koysak da versiyonu elle değiştirmek zorunda kalmasak ne olur? Bu sorunun çözümünü zaten sürekli olarak değişen zaman değerleri ile değişen bir metod ile çözebiliriz ama bu sefer de kullanıcı sitenizi her açtığında bu javascript dosyasını değişmiş olsa da olmasa da tekrar indirmek zorunda kalır, bu da sitenizin açılma süresinin uzaması anlamına gelir. Bu problemin bir diğer çözümü için server side olarak ürettiğiniz bir string'i js dosyasına query parametresi olarak eklemektir.
Asp.net için:
<script src='script.js?versiyon=<%= versiyonUret() %>'></script>
Php için:
<script src="script.js?versiyon=<?php echo versiyonUret(); ?>"></script>