¿Qué solicitudes generan las actualizaciones "F5" y "Ctrl + F5" de los navegadores?

394

¿Existe un estándar para qué acciones F5y Ctrl + F5disparadores en los navegadores web?

Una vez experimenté en IE6 y Firefox 2.x. La F5 actualización activaría una solicitud HTTP enviada al servidor con un If-Modified-Sinceencabezado, mientras Ctrl + F5que no tendría dicho encabezado. Según tengo entendido, F5 intentaré utilizar el contenido en caché tanto como sea posible, mientras que Ctrl + F5 está destinado a abandonar todo el contenido en caché y solo recuperar todo el contenido de los servidores nuevamente.

Pero hoy, noté que en algunos de los últimos navegadores (Chrome, IE8) ya no funciona de esta manera. Ambos F5y Ctrl + F5enviar el If-Modified-Sinceencabezado.

Entonces, ¿cómo se supone que esto funciona, o (si no hay un estándar) cómo difieren los principales navegadores en la forma en que implementan estas funciones de actualización?

Morgan Cheng
fuente
10
FWIW: si bien este podría ser un tema de Súper Usuario, e incluso puede haber sido pensado como algo centrado en el usuario final cuando se le preguntó originalmente, en este punto ha sido respondido y referenciado por programadores y desarrolladores web y probablemente debería dejarse aquí . SU ya tiene varias otras versiones más orientadas al usuario final de esto, y no lo necesita ...
Shog9
2
xkcd.com/1854
sudo bangbang

Respuestas:

313

Generalmente hablando:

F5puede darle la misma página incluso si se cambia el contenido, porque puede cargar la página desde la memoria caché. Pero Ctrl: F5fuerza una actualización de caché y garantizará que si se cambia el contenido, obtendrá el nuevo contenido.

dancavallaro
fuente
86
Esto es preciso, pero tenga en cuenta que si bien Ctrl + F5 hará que el navegador descarte la memoria caché y solicite una nueva del servidor, el servidor puede ignorar el encabezado sin memoria caché y servir una página en caché del lado del servidor. Por lo tanto, incluso Ctrl + F5 puede devolver una versión anterior de la página si el servidor ignora el encabezado sin caché.
AaronLS
F5 actualizará la página: CTRL + F5 realizará una actualización 'dura'.
Dimitri Dewaele
Mencione también que Ctrl-F5 enviará un formulario, si se proporciona.
jawo
Ok, entonces si presionas ctrl + f5 le dices a tu navegador que no use su caché, pero ¿qué sucede en las solicitudes posteriores a la misma página? Quiero decir, ¿puedes ver versiones anteriores de la página después de haber visto la más antigua? Si estoy viendo la versión 1 de la página porque está en caché pero ya hay disponible la versión 2, entiendo que presionar ctrl + f5 me hará ver la versión2. Luego cierro mi navegador y abro esa página nuevamente, ¿veo la versión 1 o aún veo la versión 2? Gracias.
molerus
525

Depende del navegador, pero se comportan de manera similar.

He probado FF, IE7, Opera y Chrome.

F5generalmente actualiza la página solo si se modifica. El navegador generalmente intenta usar todos los tipos de caché tanto como sea posible y agrega un encabezado "If-modified-since" a la solicitud. Opera difiere enviando un "Cache-Control: no-cache".

CTRL- F5se utiliza para forzar una actualización, sin tener en cuenta ningún caché. IE7 agrega un "Cache-Control: no-cache", al igual que FF, que también agrega "Pragma: no-cache". Chrome hace un "If-modified-since" normal y Opera ignora la clave.

Si no recuerdo mal, fue Netscape, que fue el primer navegador en agregar soporte para el control de caché al agregar "Pragma: No-cache" cuando presionó CTRL- F5.

Editar: tabla actualizada

La tabla a continuación se actualiza con información sobre lo que sucederá cuando se haga clic en el botón de actualización del navegador (después de una solicitud de Joel Coehoorn ) y el encabezado "control de caché" max-age = 0 ".

Tabla actualizada, 27 de septiembre de 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│- │                                │
└────────────┴──┴──┴──┴──┴──┴────────────────────────────────┘

Versiones probadas:

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

Notas:

  1. La versión 3.0.6 envía I y C, pero 3.1.6 abre la página en una nueva pestaña, haciendo una solicitud normal con solo "I".

  2. La versión 10.62 no hace nada. 9.61 podría hacer C a menos que fuera un error tipográfico en mi tabla anterior.

Nota sobre Chrome 6.0.472 : si realiza una recarga forzada (como CTRL- F5) se comporta como si la URL estuviera marcada internamente para realizar siempre una recarga forzada. La bandera se borra si va a la barra de direcciones y presiona enter.

algunos
fuente
55
@ Joo Coehoorn: se actualizó la tabla haciendo clic en el botón Actualizar. Tengo que amar las tablas gráficas ASCII, ¿no? La codificación de colores fue solo un efecto secundario de la codificación de colores del código.
algunos
11
¿No puedes hacerlo como una tabla HTML adecuada?
John Topley
13
FYI: esta respuesta en realidad se ha mencionado en los tableros de desarrollo de Chrome / seguimiento de errores: code.google.com/p/chromium/issues/detail?id=1906
Kip
18
@ John Topley: las tablas no están permitidas, por lo que la respuesta es no.
Algunos
1
Gran trabajo en esta mesa, esto pertenece a quirksmode. +1. Me pregunto si también hay variación en los encabezados que se utilizan para solicitar recursos dentro de la página actualizada, como imágenes, hojas de estilo, etc.
James Hart
68

He implementado una página compatible con varios navegadores para probar el comportamiento de actualización del navegador (aquí está el código fuente ) y obtener resultados similares a @some, pero para los navegadores modernos:

ingrese la descripción de la imagen aquí

Pavel Podlipensky
fuente
Los enlaces en su página están rotos, arreglé el enlace en la respuesta, pero muchos de los enlaces de esa página están rotos. podlipensky.com/examples/refreshbutton/index.html , podlipensky.com/post/2012/02/27/…
Juan Mendes
Lo siento, sobre eso: hacer la migración del blog. Los enlaces se solucionarán lo antes posible, por ahora, vaya al repositorio de github y descargue ejemplos.
Pavel Podlipensky
Los enlaces todavía están rotos. ¿La migración no ha terminado?
bernardn
¿Puede actualizar su respuesta con la versión actual de los navegadores, especialmente Safari para dispositivos móviles y de escritorio, @PavelPodlipensky?
Greg Dubicki
9

Al menos en Firefox (v3.5), el caché parece estar deshabilitado en lugar de simplemente borrado. Si hay varias instancias de la misma imagen en una página, se transferirá varias veces. Ese es también el caso de las imgetiquetas que se agregan posteriormente a través de Ajax / JavaScript.

Entonces, en caso de que se pregunte por qué el navegador sigue descargando el mismo pequeño ícono unas cientos de veces en su sitio de actualización automática de Ajax, es porque inicialmente cargó la página usando CTRL- F5.

Mermshaus
fuente
3

IE7 / 8/9 parece comportarse de manera diferente dependiendo de si la página tiene foco o no.

Si hace clic en la página y luego CTRL+ F5"Cache-Control: no-cache" se incluye en los encabezados de solicitud. Si hace clic en la barra de Ubicación / Dirección, presione CTRL+ F5no lo está.

Phil Haselden
fuente
1

Cuando el usuario presiona, F5aunque la nueva solicitud va al servidor web y obtiene una respuesta para la solicitud también. Pero cuando se analiza el encabezado de respuesta, verifica la información requerida en la memoria caché del navegador. Si la información requerida en la memoria caché no ha expirado, esa información se restaura desde la memoria caché misma.

Cuando el usuario hace clic en CTRL- F5incluso entonces, la nueva solicitud va al servidor web y obtiene una respuesta. Pero esta vez, cuando se analiza el encabezado de respuesta, no verifica la información requerida en la memoria caché y solo trae toda la información actualizada del servidor.

naXa
fuente