Tarayıcıların "F5" ve "Ctrl + F5" yenilemeleri hangi istekleri oluşturur?

Web tarayıcılarında F5 ve Ctrl + F5 eylemlerinin tetiklenmesi için bir standart var mı?

Bir keresinde IE6 ve Firefox 2.x'te bir deneme yapmıştım. F5 yenileme, sunucuya If-Modified-Since başlığıyla gönderilen bir HTTP isteğini tetiklerken, Ctrl + F5 böyle bir başlığa sahip değildi. Anladığım kadarıyla, F5 önbelleğe alınmış içeriği mümkün olduğunca kullanmaya çalışırken, Ctrl + F5 önbelleğe alınmış tüm içeriği terk etmeyi ve tüm içeriği sunuculardan yeniden almayı amaçlamaktadır.

Ancak bugün, en son tarayıcıların bazılarında (Chrome, IE8) artık bu şekilde çalışmadığını fark ettim. Hem F5 hem de Ctrl + F5 If-Modified-Since başlığını gönderiyor.

Peki bunun nasıl çalışması gerekiyor ya da (eğer bir standart yoksa) başlıca tarayıcılar bu yenileme özelliklerini uygulama konusunda nasıl farklılık gösteriyor?

Bu tarayıcıya bağlıdır ancak benzer şekillerde davranırlar.

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

F5 genellikle sayfayı yalnızca değiştirildiğinde günceller. Tarayıcı genellikle mümkün olduğunca tüm önbellek türlerini kullanmaya çalışır ve isteğe bir "If-modified-since" başlığı ekler. Opera "Cache-Control: no-cache" göndererek farklılık gösterir.

CTRL-F5 herhangi bir önbelleği göz ardı ederek güncellemeyi zorlamak için kullanılır. IE7 bir "Cache-Control: no-cache" ekler, aynı şekilde FF de "Pragma: no-cache" ekler. Chrome normal bir "If-modified-since" yapar ve Opera anahtarı yok sayar.

Yanlış hatırlamıyorsam, "Pragma ekleyerek cache-control için destek ekleyen ilk tarayıcı Netscape idi: No-cache" CTRL-F5 tuşlarına bastığınızda.

Düzenle: Tablo güncellendi

Aşağıdaki tablo, tarayıcının yenileme düğmesine tıklandığında (Joel Coehoorn tarafından yapılan bir istekten sonra) ve "max-age=0" Cache-control-header'ına tıklandığında ne olacağına ilişkin bilgilerle güncellenmiştir.

Güncellenmiş tablo, 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'yi gönderiyor, ancak 3.1.6 sayfayı yeni bir sekmede açıyor, sadece "I" ile normal bir talepte bulunmak.

  2. Sürüm 10.62 hiçbir şey yapmıyor. 9.61, eski tablomda bir yazım hatası olmadığı sürece C yapabilir.

Chrome 6.0.472 hakkında not: Zorunlu yeniden yükleme yaparsanız (CTRL-F5 gibi), url dahili olarak her zaman zorunlu yeniden yükleme yapmak üzere işaretlenmiş gibi davranır. Adres çubuğuna gidip enter tuşuna basarsanız bayrak temizlenir.

Yorumlar (11)
Çözüm

Genel olarak konuşursak:

F5 içerik değişse bile size aynı sayfayı verebilir, çünkü sayfayı önbellekten yükleyebilir. Ancak Ctrl-F5 önbelleği yenilemeye zorlar ve içerik değişirse yeni içeriği alacağınızı garanti eder.

Yorumlar (4)

Kullanıcı F5 tuşuna bastığında yeni istek web sunucusuna gitmesine rağmen istek için bir yanıt da alır. Ancak yanıt başlığı ayrıştırıldığında, tarayıcı önbelleğindeki gerekli bilgileri kontrol eder. Eğer önbellekteki gerekli bilginin süresi dolmamışsa, o zaman bu bilgi önbellekten geri yüklenir.

Kullanıcı CTRL-F5 tuşlarına tıkladığında bile yeni istek web sunucusuna gider ve bir yanıt alır. Ancak bu kez yanıt başlığı ayrıştırıldığında, önbellekte gerekli herhangi bir bilgiyi kontrol etmez ve tüm güncellenmiş bilgileri yalnızca sunucudan getirir.

Yorumlar (0)