Bir web sitesine her girdiğimde Google Chrome'u yeni JavaScript dosyalarını kontrol etmeye zorla


25

Yani, Internet Explorer’da İnternet seçeneklerine gidersem: görüntü tanımını buraya girin

IE güncellemeleri kontrol ettiğinde ayarları değiştirebilirim: görüntü tanımını buraya girin

Google Chrome'da benzer bir şey yapabilir miyim? Şu anda JavaScript dosyamı değiştirip Visual Studio'dan hata ayıkladığımda, Chrome değiştirilmiş sürümü kullanmak yerine her zaman önbelleğe alınmış sürümü kullanacak. Geçerli sürümü kullanabilmek için, gerçekten sinir bozucu olan geçici internet dosyalarımı / önbelleğimi el ile temizlemeliyim.


14
Neden bunun yerine Visual Studio tarafından yapılan önbelleklemeyi devre dışı bırakmıyorsunuz? (Cidden, kim
haltta

2
@ jpmc26 Ne önbelleğe alma?
EJoshuaS - Monica

21
Son yorumumu gevşekçe ifade ettim; Özür dilerim, eğer belirsizdi. Tarayıcılar yalnızca sunucu belirli başlıkları geri gönderirse dosyaları önbelleğe alır. Visual Studio'nun geliştirme sunucusunun önbellek başlıklarını varsayılan olarak geri göndermesi aptalca çünkü bu dosyalarda değişiklik yapılması bekleniyor . Ekstra ikinci bir saniye yükleme sayfası, eski JS ve CSS dosyalarının tarayıcıda önbelleğe alınmasından kaynaklanabilecek sorunlara değmez. Umarım bunu devre dışı bırakmanın bir yolu vardır.
jpmc26

1
Herhangi bir Visual Studio seçeneği bulunamadı, ancak bir geliştirme web.config değişikliği, görsel stüdyodaki önbelleklemeyi çözebilir. iis.net/configreference/system.webserver/staticcontent/…
GER

1
Chrome eklentisi "Cache Killer" benim için çözdü, nedenini bilmiyorum ama ctrl + f5 bazen benim için çalışmıyor
flagg19

Yanıtlar:


55

Seçenek 1: Önbelleği geçici olarak devre dışı bırak

  1. Geliştirici Araçları'nı açın (Basın F12veya Menü, Diğer Araçlar, Geliştirici Araçları)
  2. Geliştirici Araçları Ayarlarını Aç (Basın F1veya DevTools Menüsü, Ayarlar)
  3. Tercihler bölmesinin Ağ başlığının altındaki "DevTools açıkken önbelleği devre dışı bırak" seçeneğini işaretleyin.

Seçenek 2: Oturum için önbelleği devre dışı bırak

--disk-cache-size=1 --media-cache-size=1Önbelleği etkin bir şekilde devre dışı bırakarak önbellekleri 1 bayta sınırlayacak komut satırı anahtarları ile Chrome'u başlatın.

Seçenek 3: Manuel Kuvvet Yenileme

Önbelleğe alınmış içeriği yok sayarak geçerli sayfayı yeniden yükle: Shift+ F5veya Ctrl+ Shift+r

Chrome Klavye Kısayolları - Chrome Yardım ("Web sayfası kısayolları" altında)

Seçenek 4: Ekstra Yeniden Yükleme Seçenekleri ( Kaynak )

Geliştirici Araçları açıkken, aşağıdakilerle bir yeniden yükleme menüsü görüntülemek için Yeniden Yükle düğmesine sağ tıklayın:

  • Normal Yeniden Yükleme (Ctrl + R)
  • Sabit Yeniden Yükleme (Ctrl + ÜstKrkt + R)
  • Boş Önbellek ve Sabit Yeniden Yükleme

1
@ Bruno Tek, ayrıca her zaman ctrl + f5 kullanılır. Sadece test edildi ve her ikisi de işe yarıyor.
Jeroen

Seçenek 2'yi bir bükülme ile kullanmanızı öneririm. Anahtarlarla Chrome'a ​​ayrı bir kısayol yapın ve farklı şekilde adlandırın. Windows Görev Çubuğunuzun farklı uçlarına yerleştirin.
Christopher Hostage,

8

Krom yenilemeyle ilgili% 100 olmayabilir, ancak daha fazla geliştirme için. @Dom'un dediği gibi, kaynağınızdan sonra bir? V = # ekleyebilirsiniz. Süreci otomatikleştirmenin bir yolu, söz konusu dosyanın içeriğini toplamak ve onu sürüm olarak kullanmaktır.

Bu yardımcı olabilir, C # (uygulama için ustura) içinde bunun nasıl bir pasaj kodunu var.

Yardımcı:

public static string HashUrl(string relativeUrl)
    {
        var server = HttpContext.Current.Server;
        if (File.Exists(server.MapPath(relativeUrl)))
        {
            byte[] hashData;
            using (var md5 = MD5.Create())
            using (var stream = File.OpenRead(server.MapPath(relativeUrl)))
                hashData = md5.ComputeHash(stream);

            return relativeUrl.Replace("~", "") + "?v=" + BitConverter.ToString(hashData).Replace("-", "");
        }
        return relativeUrl + "?v=notFound";
    }

Uygulama:

<link rel="stylesheet" href=@Util.HashUrl("~/Controllers/Home/Views/Index.css") />

Bu yardımcı olur umarım

DÜZENLEME --- Bazıları bazı çalışma zamanı ve 1000 küçük kaynak istedi, yaklaşık 11 ms sürer.

https://en.code-bude.net/2013/08/07/md5-hashes-in-c-benchmark-and-speed-%E2%80%8B%E2%80%8Boptimization/

görüntü tanımını buraya girin https://en.code-bude.net/wp-content/uploads/2013/08/md5_performance_benchmark_2.png


2
Bunun gibi kaynakların sürümlenmesi (ya da sürümün / karma kaynağın kendisine eklenmesiyle), özellikle gerçek dünyadaki güncellemeleri dağıtırken, önbellek kontrolü başlığının kurallarının aksine - her şekilde önbelleğe alma işlemi gerçekleşiyor olabilir ve çoğu kullanıcı önbelleğin nasıl yenileneceğini (veya yenilenmesi gerektiğini) bilemez. Siz (uygulamanızı) yeni adlandırılmış bir kaynak için sorarsanız, önbelleklenemez.
TripeHound

1
Bu büyük bir performans kaybı değil mi? Her css ve js dosyasını karma, sayfaya bir link eklendiğinde her zaman ... Bunun için kıyaslamalar yaptınız mı?
Raidri, Reinstate Monica'ya

2
@Raidri Anında hareket etmek muhtemelen iyi bir fikir değil (ilk yorumda bunu yaptığımın farkında değildim). Derleme işlemi sırasında bir karma veya sürüm kullanmak için başvuruları güncelleme.
TripeHound

@Raidri Ben hash ve ben inşa zaman içinde bir fark görmedim ben gerçekten kıyaslama denemedim meaby 20 kaynak ile oldukça küçük bir uygulama var. Ayrıca ikinci cümlenizi anladığımdan emin değilim, ancak kaynaklar önbelleğe alınmış ve tarayıcı yalnızca eğer kaynak değiştirirse onları yeniden önbelleğe alır.
fred beauchamp

Karma derleme zamanında değil, her sayfa oluşturma işleminde hesaplanır. Bu bir sunucu sorunu ve tarayıcıda önbelleğe alma ile ilgisi yok.
Raidri, Reinstate Monica'ya

5

Bunların mümkün olamayabileceği diğer durumlarda, örneğin, bir son kullanıcının bilgisayarında erişime sahip olmadığınız bir yenilemeyi zorlamak istediğinizde , tarayıcının tanımlamasını sağlayan bir sorgu parametresi olarak komut dosyası adına bir sürüm numarası ekleyebilirsiniz. farklı bir dosya olarak . yani. example.js?v=1. Bunu zorlamak için her bir yeniden yüklemedeki numarayı değiştirmeniz gerekeceğini unutmayın.

Bunu yerel kalkınma ile de yapabilirsiniz, ancak geliştirme araçları yöntemi çok daha etkilidir.


3

Eğer alınca @Steven cevap ilaveten, Konsol Geliştirici Araçları açılan yapabilirsiniz Sağ Click üzerinde yenileme düğmesi ve açılır menüyü kullanın.

Bu menüde "Boş Önbellek ve Sabit yeniden yükleme" seçeneğine sahipsiniz .

Aradığın şey bu.


1
İngilizce olmayan bir Chrome sürümü kullandığınızı varsayıyorum. İngilizce sürümünü kullanıyorum ve buna "Boş Önbellek ve Sabit yeniden yükleme" deniyor.
Nzall

1

Siteyi geliştiriyorsanız, Chrome'un dosyaları sunucuda değiştirildiklerinde uygun şekilde yeniden almak için must-revalidateayar gerektirdiğini bilmelisiniz Cache-Control.

Diğer yanıtlar, kendi dosyalarınızı yeniden düzenlemeye zorlamak için kendi Chrome sürümünüzü zorlamak için SHIFT-F5'e nasıl basacağınızı söyler. Ancak, sitenin tüm kullanıcılarına siteyi her değiştirdiğinde bunu yapmalarını söylemek makul olur mu? Dahil etmeyi ayarlarsanız Cache-Control, must-revalidateChrome herhangi bir dosyanın değişip değişmediğini kontrol eder ve gerektiğinde bunları doğru bir şekilde indirir.

Bu blog gönderisindeki ayrıntılara bakın: https://agiletribe.wordpress.com/2018/01/29/caching-for-chrome/

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.