Tarayıcıların “F5” ve “Ctrl + F5” yenilemeleri hangi istekleri üretir?


394

Web tarayıcılarında hangi eylemler F5ve Ctrl + F5tetikleyici için bir standart var mı ?

Bir keresinde IE6 ve Firefox 2.x'te denemeler yaptım. F5 Yenileme, bir sunucuya gönderilen bir HTTP isteği tetikler If-Modified-Sinceederken, başlığında Ctrl + F5böyle bir başlığa sahip olmazdı. Anladığım kadarıyla, F5 önbelleğe alınmış içeriği mümkün olduğunca kullanmaya çalışacağım, ancak Ctrl + F5 önbelleğe alınmış tüm içeriği terk etmeyi ve sunuculardan tüm içeriği tekrar almayı amaçlayacağım.

Ancak bugün, en son tarayıcıların bazılarında (Chrome, IE8) artık bu şekilde çalışmadığını fark ettim. Her ikisini de F5ve üstbilgiyi Ctrl + F5gönderin If-Modified-Since.

Peki, bunun nasıl çalışması gerekiyor veya (standart yoksa) büyük tarayıcılar bu yenileme özelliklerini uygulama yöntemlerinde nasıl farklılıklar gösteriyor?


10
FWIW: Bu kesinlikle iken olabilir bir Süper Kullanıcı konusu olabilir ve hatta amaçlı olabilir biraz son kullanıcı-odaklı başlangıçta sorulduğunda, bu noktada hem yanıtlandı ve programcılar ve web geliştiricileri tarafından başvurulan ve muhtemelen burada bırakılmalıdır . SU'nun bunun daha birçok son kullanıcı odaklı versiyonu var ve buna gerek yok ...
Shog9

Yanıtlar:


313

Genel konuşma:

F5içerik değiştirilse bile size aynı sayfayı verebilir, çünkü sayfayı önbellekten yükleyebilir. Ancak Ctrl- F5önbellek yenilemeyi zorlar ve içerik değiştirilirse yeni içeriği alacağınızı garanti eder.


86
Thi doğrudur, ancak Ctrl + F5'in tarayıcının önbelleği atmasına ve sunucudan yeni bir istek istemesine neden olurken, sunucunun önbelleksiz üstbilgiyi yok sayabilir ve sunucu tarafı önbelleğe alınmış bir sayfa sunabileceğini unutmayın. Bu nedenle, sunucu önbelleksiz üstbilgiyi yoksayarsa, Ctrl + F5 bile sayfanın eski bir sürümünü döndürebilir.
AaronLS

F5 sayfayı yenileyecek - CTRL + F5 'zor' yenileme yapacak.
Dimitri Dewaele

Ayrıca, belirtilirse, Ctrl-F5'in bir form göndereceğini belirtin.
jawo

Tamam, ctrl + f5 tuşlarına basarsanız, tarayıcınıza önbelleğini kullanmamasını söylersiniz, ancak daha sonra aynı sayfaya yapılan isteklerde ne olur? Yani, en eskisini gördükten sonra sayfanın eski sürümlerini görebiliyor musunuz? Önbelleğe alınmış, ancak zaten sürüm 2 kullanılabilir olduğundan sayfanın sürüm 1 görüyorum, ben ctrl + f5 vurmak beni sürüm2 görmek yapacak anlıyorum. Sonra tarayıcımı kapatıp o sayfayı tekrar açıyorum, version sürüm 1'i görüyor muyum veya hala sürüm2'yi görüyorum? Teşekkürler.
molerus

525

Tarayıcıya bağlı, ancak benzer şekilde davranıyorlar.

FF, IE7, Opera ve Chrome'u test ettim.

F5genellikle sayfayı yalnızca değiştirilmişse günceller. Tarayıcı genellikle tüm önbellek türlerini olabildiğince kullanmaya çalışır ve isteğe "If-Modified-since" başlığı ekler. Opera, "Cache-Control: no-cache" göndererek farklılık gösterir.

CTRL- F5herhangi bir önbelleği göz ardı ederek bir güncellemeyi zorlamak için kullanılır. IE7, "Pragma: no-cache" de ekleyen FF gibi bir "Cache-Control: no-cache" ekler. Chrome normal bir "Eğer değiştirilmişse-beri" yapar ve Opera anahtarı yok sayar.

Doğru hatırlıyorsam, CTRL- tuşuna bastığınızda "Pragma: No-cache" ekleyerek önbellek kontrolü desteği ekleyen ilk tarayıcı olan Netscape'ti F5.

Düzenle: Güncellenmiş tablo

Aşağıdaki tablo, tarayıcının yenile düğmesine tıklandığında ( Joel Coehoorn tarafından yapılan bir istekten sonra ) ve "max-age = 0" Önbellek-kontrol başlığı ile ne olacağına dair bilgilerle güncellenir .

Güncelleme tablosu, 27 Eylül 2010

┌────────────┬───────────────────────────────────────────────┐
│  UPDATED   │                Firefox 3.x                    │
│27 SEP 2010 │  ┌────────────────────────────────────────────┤
│            │  │             MSIE 8, 7                      │
│ Version 3  │  │  ┌─────────────────────────────────────────┤
│            │  │  │          Chrome 6.0                     │
│            │  │  │  ┌──────────────────────────────────────┤
│            │  │  │  │       Chrome 1.0                     │
│            │  │  │  │  ┌───────────────────────────────────┤
│            │  │  │  │  │    Opera 10, 9                    │
│            │  │  │  │  │  ┌────────────────────────────────┤
│            │  │  │  │  │  │                                │
├────────────┼──┼──┼──┼──┼──┼────────────────────────────────┤
│          F5│IM│I │IM│IM│C │                                │
│    SHIFT-F5│- │- │CP│IM│- │ Legend:                        │
│     CTRL-F5│CP│C │CP│IM│- │ I = "If-Modified-Since"        │
│      ALT-F5│- │- │- │- │*2│ P = "Pragma: No-cache"         │
│    ALTGR-F5│- │I │- │- │- │ C = "Cache-Control: no-cache"  │
├────────────┼──┼──┼──┼──┼──┤ M = "Cache-Control: max-age=0" │
│      CTRL-R│IM│I │IM│IM│C │ - = ignored                    │
│CTRL-SHIFT-R│CP│- │CP│- │- │                                │
├────────────┼──┼──┼──┼──┼──┤                                │
│       Click│IM│I │IM│IM│C │ With 'click' I refer to a      │
│ Shift-Click│CP│I │CP│IM│C │ mouse click on the browsers    │
│  Ctrl-Click│*1│C │CP│IM│C │ refresh-icon.                  │
│   Alt-Click│IM│I │IM│IM│C │                                │
│ AltGr-Click│IM│I │- │IM│- │                                │
└────────────┴──┴──┴──┴──┴──┴────────────────────────────────┘

Test edilen sürümler:

  • Firefox 3.1.6 ve 3.0.6 (WINXP)
  • MSIE 8.0.6001 ve 7.0.5730.11 (WINXP)
  • Chrome 6.0.472.63 ve 1.0.151.48 (WINXP)
  • Opera 10.62 ve 9.61 (WINXP)

Notlar:

  1. Sürüm 3.0.6, I ve C gönderir, ancak 3.1.6 sayfayı yeni bir sekmede açar ve yalnızca "I" ile normal bir istekte bulunur.

  2. Sürüm 10.62 hiçbir şey yapmaz. Eski masamda bir yazım hatası olmadıkça 9.61 C yapabilir.

Chrome 6.0.472 hakkında Not : Eğer (gibi zorunlu yeniden yapmanız halinde CTRL- F5) o URL içten üzere işaretlenmiş gibi hep zorla yeniden yapmanız davranır. Adres çubuğuna gidip enter tuşuna basarsanız bayrak silinir.


5
@Joel Coehoorn: Yenile düğmesine tıklayarak tablo güncellendi. ASCII grafik tablolarını sevmelisin, değil mi? Renk kodlaması, kod renk kodlamasının sadece bir yan etkisidir.
bazı

11
Uygun bir HTML tablosu olarak yapamaz mısınız?
John Topley

13
Bilginize - Bu yanıta aslında krom geliştirme / hata izleme panolarında referans verilmiştir: code.google.com/p/chromium/issues/detail?id=1906
Kip

18
@John Topley: Tablolara izin verilmiyor, bu yüzden cevap hayır.
Bazı

1
Bu masada harika bir çalışma - bu quirksmode'a ait. +1. Ayrıca, yenilenen sayfadaki görüntüler, stil sayfaları vb. Gibi kaynak istemek için hangi başlıkların kullanıldığına dair bir değişiklik olup olmadığını merak ediyorum.
James Hart

68

Tarayıcının yenileme davranışını test etmek için çapraz tarayıcı uyumlu bir sayfa uyguladım (işte kaynak kod burada ) ve bazılarına benzer sonuçlar elde ettim, ancak modern tarayıcılar için:

resim açıklamasını buraya girin


Sayfanızdaki bağlantılar koptu, cevabın bağlantısını düzelttim, ancak o sayfadaki bağlantıların çoğu koptu. podlipensky.com/examples/refreshbutton/index.html , podlipensky.com/post/2012/02/27/…
Juan Mendes

Üzgünüm, bunun için - blog taşıma işlemi yapıyor. Şimdilik bağlantılar ASAP olarak düzeltilecek - lütfen github deposuna gidin ve örnekleri indirin.
Pavel Podlipensky

Bağlantılar hala bozuk. Taşıma tamamlanmadı mı?
bernardn

Cevabınızı tarayıcıların güncel sürümü, özellikle mobil ve masaüstü Safari, @PavelPodlipensky ile güncelleyebilir misiniz?
Greg Dubicki

9

En azından Firefox'ta (v3.5), önbellek temizlenmek yerine devre dışı bırakılmış gibi görünüyor . Bir sayfada aynı görüntünün birden fazla örneği varsa, birden çok kez aktarılır. imgAjax / JavaScript ile sonradan eklenen etiketler için de durum aynıdır.

Tarayıcının neden otomatik olarak yenilenen Ajax sitenizde aynı küçük simgeyi birkaç yüz kez indirmeye devam ettiğini merak ediyorsanız, başlangıçta CTRL- kullanarak sayfayı yüklemiş olmanızdır F5.


3

IE7 / 8/9, sayfanın odaklanıp odaklanmadığına bağlı olarak farklı davranıyor gibi görünüyor.

Sayfayı tıklarsanız ve CTRL+ işaretine tıklarsanız F5"Önbellek Denetimi: önbellek yok" istek başlıklarına eklenir. Konum / Adres çubuğunu tıklarsanız CTRL+ işaretine F5basmazsınız.


1

Ne zaman kullanıcı basın F5rağmen yeni istek web sunucusuna gider ve de istek için bir yanıt almak. Ancak yanıt başlığı Ayrıştırıldığında tarayıcı önbelleğinde gerekli bilgileri kontrol edin. Önbellekteki gerekli bilgilerin süresi dolmamışsa, bu bilgiler önbellekteki kendisinden geri yüklenir.

Kullanıcı tıkladığında CTRL- F5o zaman bile yeni istek web sunucusuna gider ve bir yanıt alır. Ancak bu kez yanıt üstbilgisi Ayrıştırıldığında önbellekte gerekli bilgileri denetlemez ve yalnızca tüm güncel bilgi formu sunucusunu getirir.

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.