5.00 / 1 oy

Tarayıcının JS dosyasını önbelleğe almasını engellemek

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>

 

RainingCodes

21.04.2020 20:50

Bu soru henüz yanıtlanmamış.

Bu soruya sadece kayıtlı kullanıcılar yanıt yazabilirler. Yanıt yazmak için lütfen giriş yapınız.

Reitix
Tarayıcının JS dosyasını önbelleğe almasını engellemek

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.