http force - ¿Qué solicitudes generan las actualizaciones de los navegadores “F5” y “Ctrl+F5”?




cache refresh (6)

¿Existe un estándar para qué acciones F5 y Ctrl + F5 se activan en los navegadores web?

Una vez experimenté en IE6 y Firefox 2.x. La actualización de F5 activaría una solicitud HTTP enviada al servidor con un encabezado If-Modified-Since , mientras que Ctrl + F5 no tendría dicho encabezado. A mi entender, F5 intentará utilizar el contenido almacenado en caché tanto como sea posible, mientras que Ctrl + F5 está destinado a abandonar todo el contenido almacenado en caché y simplemente 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. Tanto F5 como Ctrl + F5 envían el encabezado If-Modified-Since .

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


Answers

Depende del navegador pero se comportan de manera similar.

He probado FF, IE7, Opera y Chrome.

F5 usualmente actualiza la página solo si es modificada. 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 - F5 se 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 recuerdo correctamente, fue Netscape el primer navegador que agregó soporte para el control de caché al agregar "Pragma: No-caché" cuando presionó CTRL - F5 .

Edición: tabla actualizada

La siguiente tabla 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 Cache-control-header "max-age = 0".

Cuadro actualizado, 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, realizando 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 la url está marcada internamente para hacer siempre una recarga forzada. La bandera se borra si va a la barra de direcciones y presiona intro.


Generalmente hablando:

F5 puede darle la misma página incluso si se cambia el contenido, ya que puede cargar la página desde el caché. Pero Ctrl - F5 fuerza una actualización de caché, y garantizará que si se cambia el contenido, obtendrá el nuevo contenido.


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

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


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 etiquetas img que se agregan posteriormente a través de Ajax / JavaScript.

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


Cuando el usuario presiona F5, la nueva solicitud va al servidor web y también recibe una respuesta para la solicitud. Pero cuando se analiza el encabezado de respuesta, verifique la información requerida en el caché del navegador. Si la información requerida en el caché no ha caducado, entonces esa información se restaura desde el mismo caché.

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


Los formularios HTML soportan GET y POST. (HTML5 en un punto agregó PUT / DELETE, pero se eliminaron).

XMLHttpRequest admite todos los métodos, incluido CHICKEN, aunque algunos nombres de métodos se comparan con mayúsculas y minúsculas (los métodos distinguen entre mayúsculas y minúsculas por HTTP) y algunos nombres de métodos no son compatibles en absoluto por razones de seguridad (por ejemplo, CONECTAR).

Los navegadores están convergiendo lentamente en las reglas especificadas por XMLHttpRequest, pero como el otro comentario señalado todavía hay algunas diferencias.





http browser caching cross-browser refresh